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.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Comparator;
import java.util.TreeSet;


public class B658 {

	private static boolean home = !"true".equals(System.getProperty("ONLINE_JUDGE"));
	private static boolean debug = false;
	
	public static void main(String[] args) throws IOException {
		int nrTeste = 2;
String[] inputs = {"4 2 8\n300 950 500 200\n1 3\n2 4\n2 3\n1 1\n1 2\n2 1\n2 2\n2 3\n", "6 3 9\n50 20 51 17 99 24\n1 3\n1 4\n1 5\n1 2\n2 4\n2 2\n1 1\n2 4\n2 3\n"};
String[] expected = {"NO\nYES\nNO\nYES\nYES\n", "NO\nYES\nNO\nYES\n"};
		for (int i = 0; home && i < nrTeste; i++) {
			System.out.print("\nExpect: " + expected[i] + "\n   Got: ");
			System.setIn(new ByteArrayInputStream(inputs[i].getBytes()));
			solve();
		}
		if (!home) {
			solve();
		}
		System.out.close();
	}
	
	public static void solve() throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		PrintWriter pw = new PrintWriter(System.out);
		String[] line;
		line = br.readLine().split(" ");
		int n = Integer.parseInt(line[0]);
		int k = Integer.parseInt(line[1]);
		int q = Integer.parseInt(line[2]);
		line = br.readLine().split(" ");
		int[] t = new int[n];
		for (int i = 0; i < n; i++) {
			t[i] = Integer.parseInt(line[i]);
		}
		TreeSet<R658aux> ts = new TreeSet<>(new Comparator<R658aux> (){

			@Override
			public int compare(R658aux o1, R658aux o2) {
				return Integer.compare(o1.t, o2.t);
			}

			
		});
		for (int i = 0; i< q; i++) {
			line = br.readLine().split(" ");
			if (line[0].equals("2")) {
				int friend = Integer.parseInt(line[1]);
				R658aux qry = new R658aux(t[friend-1], friend);
				if (ts.contains(qry)) {
					pw.println("YES");
				} else {
					pw.println("NO");
				}
			} else {
				int frnd = Integer.parseInt(line[1]);
				ts.add(new R658aux(t[frnd-1], frnd));
				if (ts.size() > k) {
					ts.remove(ts.first());
				}
			}
		}
		br.close();
		pw.flush();
	}
	
}

class R658aux {
	int t;
	int f;
	
	R658aux (int t, int f) {
		this.t = t;
		this.f = f;
	}
	
	public String toString() {
		return String.format("(%d,  %d)", this.t, this.f);
	}
}