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);
        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;
        }
    }
}
