1 1 1
1000000000
2 1
 20 2 15
12698951 55128070 116962690 156763505 188535242 194018601 269939893 428710623 442819431 483000923 516768937 552903993 633087286 656092270 671535141 714291344 717660646 846508634 879748146 937368929
2 7
1 2
2 4
1 19
1 12
1 5
2 18
2 11
1 16
2 1
2 3
2 19
1 17
2 9
2 6
 6 3 10
62417580 78150524 410053501 582708235 630200761 760672946
2 2
1 5
1 2
1 4
2 4
2 1
2 1
1 6
2 5
2 6

NO
 NO
NO
NO
NO
NO
NO
YES
NO
NO
 NO
YES
NO
NO
YES
YES

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

public class A {
	static BufferedReader reader;
	static StringTokenizer tokenizer;

	public static String next() {
		while (tokenizer == null || !tokenizer.hasMoreTokens()) {
			try {
				tokenizer = new StringTokenizer(reader.readLine());
			} catch (IOException e) {
			}
		}
		return tokenizer.nextToken();
	}

	public static int nextInt() {
		return Integer.parseInt(next());
	}

	public static long nextLong() {
		return Long.parseLong(next());
	}

	public static void main(String[] args) {
		reader = new BufferedReader(new InputStreamReader(System.in));
		int n = nextInt();
		int k = nextInt();
		long q = nextLong();
		int min = 0;
		long[] fr = new long[k];
		long[][] t = new long[n][2];
		for (int i = 0; i < t.length; i++) {
			t[i][0] = nextLong();
		}
		for (int i = 0; i < q; i++) {
			long type = nextLong();
			int id = nextInt() - 1;
			if (type == 1) {
				Arrays.sort(fr);
				if (t[id][0] >= min) {
					fr[0] = t[id][0];
				}
				Arrays.sort(fr);
				t[id][1] = 1;
			} else if (type == 2) {
//				System.out.println(Arrays.toString(fr));
				if (t[id][0] >= fr[0] && t[id][1] == 1) {
					System.out.println("YES");
				} else {
					System.out.println("NO");
				}
			}
		}
	}
}