import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;

public class Main {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String q = "";
		while ((q = br.readLine()) != null) {

			if (q.equals(""))
				break;

			int numbers = new Scanner(q).nextInt();

			Map<Integer, Integer> all = new TreeMap<Integer, Integer>();

			String line;
			for (int i = 0; i < numbers; i++) {
				line = br.readLine();
				Scanner sc = new Scanner(line);

				all.put(sc.nextInt(), sc.nextInt());
			}

			numbers = new Scanner(br.readLine()).nextInt();
			
			int result[] = new int[numbers];

			for (int i = 0; i < numbers; i++) {
				line = br.readLine();
				Scanner sc = new Scanner(line);

				String first = sc.next();
				String second = sc.next();
				int time = sc.nextInt();

				int numberOfSamples = 0;

				if (second.equals("avg")) {

					Iterator<Integer> iterator = all.keySet().iterator();
					iterator.next();

					while (iterator.hasNext()) {
						int curr = iterator.next();

						int sum = 0;
						int count = 0;

						for (Integer c : all.keySet()) {
							if (c == curr)
								break;
							if (c + time >= curr) {
								count++;
								sum += all.get(c);
							}
						}

						if (first.equals("gt")) {
							if (all.get(curr) > (sum / count)) {
								numberOfSamples++;
							}
						} else {
							if (all.get(curr) < (sum / count)) {
								numberOfSamples++;
							}
						}
					}

				} else if (second.equals("min")) {

					Iterator<Integer> iterator = all.keySet().iterator();
					iterator.next();

					while (iterator.hasNext()) {
						int curr = iterator.next();

						int min = Integer.MAX_VALUE;

						for (Integer c : all.keySet()) {
							if (c == curr)
								break;

							if (c + time >= curr) {
								min = Math.min(min, all.get(c));
							}
						}

						if (first.equals("gt")) {
							if (all.get(curr) > min) {
								numberOfSamples++;
							}
						} else {
							if (all.get(curr) < min) {
								numberOfSamples++;
							}
						}
					}

				} else {
					Iterator<Integer> iterator = all.keySet().iterator();
					iterator.next();

					while (iterator.hasNext()) {
						int curr = iterator.next();

						int max = 0;

						for (Integer c : all.keySet()) {
							if (c == curr)
								break;

							if (c + time >= curr) {
								max = Math.max(max, all.get(c));
							}
						}

						if (first.equals("gt")) {
							if (all.get(curr) > max) {
								numberOfSamples++;
							}
						} else {
							if (all.get(curr) < max) {
								numberOfSamples++;
							}
						}
					}
				}

				result[i] = numberOfSamples;
				
			}

			for(int m = 0; m < result.length; m++) {
				
				System.out.println(result[m]);
				
			}
		}
		
		
	}

}
