import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Created by cteam004 on 10/22/16.
 */
public class Samples {
    public static int samples;
    public static int[][] data;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();

        while (line != null) {
            samples = Integer.parseInt(line);
            data = new int[samples][2];

            for (int i = 0; i < samples; i++) {
                String[] dat = br.readLine().split(" ");

                data[i][0] = Integer.parseInt(dat[0]);
                data[i][1] = Integer.parseInt(dat[1]);
            }

            int cond = Integer.parseInt(br.readLine());

            for (int i = 0; i < cond; i++) {
                String[] condition = br.readLine().split(" ");

                if (condition[0].equals("gt")) {
                    int count = 0;

                    if (condition[1].equals("min")) {
                        int range = Integer.parseInt(condition[2]);

                        for (int j = 1; j < samples; j++) {
                            if(data[j][1] > min(data[j][0], range, j-1)) {
                                count++;
                            }
                        }

                        System.out.println(count);
                    }

                    if (condition[1].equals("max")) {
                        int range = Integer.parseInt(condition[2]);

                        for (int j = 1; j < samples; j++) {
                            if(data[j][1] > max(data[j][0], range, j-1)) {
                                count++;
                            }
                        }

                        System.out.println(count);
                    }

                    if (condition[1].equals("avg")) {
                        int range = Integer.parseInt(condition[2]);

                        for (int j = 1; j < samples; j++) {
                            if(data[j][1] > avg(data[j][0], range, j-1)) {
                                count++;
                            }
                        }

                        System.out.println(count);
                    }

                } else {
                    int count = 0;

                    if (condition[1].equals("min")) {
                        int range = Integer.parseInt(condition[2]);

                        for (int j = 1; j < samples; j++) {
                            if(data[j][1] < min(data[j][0], range, j-1)) {
                                count++;
                            }
                        }

                        System.out.println(count);
                    }

                    if (condition[1].equals("max")) {
                        int range = Integer.parseInt(condition[2]);

                        for (int j = 1; j < samples; j++) {
                            if(data[j][1] < max(data[j][0], range, j-1)) {
                                count++;
                            }
                        }

                        System.out.println(count);
                    }

                    if (condition[1].equals("avg")) {
                        int range = Integer.parseInt(condition[2]);

                        for (int j = 1; j < samples; j++) {
                            if(data[j][1] < avg(data[j][0], range, j-1)) {
                                count++;
                            }
                        }

                        System.out.println(count);
                    }
                }
            }

            line = br.readLine();
        }
    }

    public static int min(int startTime, int range, int index) {
        int endTime = startTime - range;
        int min = Integer.MAX_VALUE;

        for (int i = index; i >= 0; i--) {
            if (data[i][0] < endTime) {
                break;
            }

            if (data[i][1] < min) {
                min = data[i][1];
            }
        }

        if (min == Integer.MAX_VALUE){
            min = -1;
        }

        return min;
    }

    public static int max(int startTime, int range, int index) {
        int endTime = startTime - range;
        int max = Integer.MIN_VALUE;

        for (int i = index; i >= 0; i--) {
            if (data[i][0] < endTime) {
                break;
            }

            if (data[i][1] > max) {
                max = data[i][1];
            }
        }

        if (max == Integer.MIN_VALUE){
            max = Integer.MAX_VALUE;
        }

        return max;
    }



    public static double avg(int startTime, int range, int index) {
        int endTime = startTime - range;
        double sum = 0;
        int count = 0;

        for (int i = index; i >= 0; i--) {
            if (data[i][0] < endTime) {
                break;
            }

            count++;
            sum += data[i][1];
        }

        return sum/count;
    }
}
