/* Задача "Объявление массивов"
 * Интернет олимпиады для школьников. Сезон 2006 - 2007
 * Автор задачи:  Александр Торопов, toropov@rain.ifmo.ru
 * Автор решения: Александр Торопов, toropov@rain.ifmo.ru
 */

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class java_at implements Runnable {
	Scanner in;
	PrintWriter out;
	
	public void solve() {
		int n = in.nextInt();
		
		HashMap<String, Integer> types = new HashMap<String, Integer>();
		for(int i = 0; i < n; ++i) {
			String name_type = in.next();
			int size = in.nextInt();
			types.put(name_type, size);
		}
		
		int m = in.nextInt();
		for(int i = 0; i < m; ++i) {
			String type = in.next();
			int size = types.get(type);
			String name = in.next();
			BigInteger res = BigInteger.ZERO;
			while(name.lastIndexOf('[') != -1) {
				String temp_str = name.substring(name.lastIndexOf('[') + 1, name.lastIndexOf(']'));
				name = name.substring(0, name.lastIndexOf('['));
				int cur_dimension = Integer.parseInt(temp_str);
				if (res.compareTo(BigInteger.ZERO) == 0) {
					res = BigInteger.valueOf(24 + 1L * size * cur_dimension);
				}
				else {
					res = (res.multiply(BigInteger.valueOf(cur_dimension))).add(BigInteger.valueOf(24));
				}
			}
			out.println(res);
		}
	}
	
	public void run() {
		try {
			solve();
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(89);
		} finally {
			out.close();
		}
	}
	
	private java_at(String name) {
		try {
			in = new Scanner(new File(name + ".in"));
			out = new PrintWriter(new File(name + ".out"));
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(89);
		}
	}

	public static void main(String[] args) {
		(new Thread(new java_at("java"))).start();
	}

}
