import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;

/**
 * Created by tym10 on 10/22/16.
 */
class Samples {

    static ArrayList<Data> stack;

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String line;
        while ((line = scanner.nextLine()).length() > 0) {
            int lines = Integer.parseInt(scanner.nextLine());
            stack = new ArrayList<>(lines);
            String[] strArray;
            for (int i = 0; i < lines; i++) {
                strArray = scanner.nextLine().split(" ");
                stack.add(new Data(Integer.parseInt(strArray[0]), Integer.parseInt(strArray[1])));
            }

            int condCount = Integer.parseInt(scanner.nextLine());
            int T;
            for (int i = 0; i < condCount; i++) {
                strArray = scanner.nextLine().split(" ");
                T = Integer.parseInt(strArray[2]);
                switch (strArray[1]) {
                    case "avg":
                        avg(strArray[0].contains("gt"), T);
                        break;
                    case "max":
                        max(strArray[0].contains("gt"), T);
                        break;
                    case "min":
                        min(strArray[0].contains("gt"), T);
                        break;
                }
            }
        }
    }


    static void min(boolean gt, int T){
        Data data;
        int j, min, n = 0;
        for (int i = stack.size() - 1; i >=0 ; i--) {
            j = i - 1;
            min = Integer.MAX_VALUE;
            while(j >= 0 && ((data = stack.get(j)).time - T <= stack.get(i).time)){
                min = data.val < min ? data.val : min;
                j--;
            }
            if(i-1 < 0) continue;
            if(gt && min < stack.get(i).val){
                n++;}
            else if(!gt && min > stack.get(i).val) {
                //System.out.println(stack.get(i).time+" "+stack.get(i).val);
                n++;
            }

        }
        System.out.println(n);
    }

    static void max(boolean gt, int T){
        Data data;
        int j, max, n = 0;
        for (int i = stack.size() - 1; i >=0 ; i--) {
            j = i - 1;
            max = Integer.MIN_VALUE;
            while(j >= 0 && ((data = stack.get(j)).time - T <= stack.get(i).time)){
                max = data.val > max ? data.val : max;
                j--;
            }
            if(i-1 < 0) continue;
            if(gt && max < stack.get(i).val){
                n++;}
            else if(!gt && max > stack.get(i).val) {
                //System.out.println(stack.get(i).time+" "+stack.get(i).val);
                n++;
            }

        }
        System.out.println(n);
    }
    static void avg(boolean gt, int T){
        Data data;
        int j, avg, n = 0, avgN = 0;
        for (int i = stack.size() - 1; i >=0 ; i--) {
            j = i - 1;
            avg = 0;
            avgN = 0;
            while(j >= 0 && ((data = stack.get(j)).time - T <= stack.get(i).time))
            {
                avg += data.val;
                avgN++;
                j--;
            }

            if(i-1 <= 0) continue;
            avg /= avgN;
            if(gt && avg < stack.get(i).val)
            {
                //System.out.println(stack.get(i).time+" "+stack.get(i).val + " avg: "+avg+" avgN: "+avgN);
                n++;
            }
            else if(!gt && avg > stack.get(i).val) {
                //System.out.println(stack.get(i).time+" "+stack.get(i).val);
                n++;
            }

        }
        System.out.println(n);
    }

    static class Data{
        int time;
        int val;

        public Data(int time, int val) {
            this.time = time;
            this.val = val;
        }
    }
}
