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.*;
import java.util.*;

public class B {
	
	public static void main(String[] args) {
		MyIntegerScanner sc = new MyIntegerScanner(System.in);
		
		int n = sc.nextInt();
		int k = sc.nextInt();
		int q = sc.nextInt();
		
		MyFenwickTree myFT = new MyFenwickTree(1000100);
		
		int[] nums = new int[n];
		int[] temp = new int[n];

		for (int i = 0; i < n; i++) {
			nums[i] = sc.nextInt();
			temp[i] = nums[i];
		}
		
		Arrays.sort(temp);
		
		int c = 0;
		
		//to compress 1-10^9 into 1-10^6 as stated in the problem statement (i.e. N <= 10e6)
		for (int i : nums) {
			int idx = Arrays.binarySearch(temp, i);
			nums[c] = idx + 1;
			c++;
		}
		
		boolean[] isOnline = new boolean[n];
		int online = 0;
		
		for (int i = 0; i < q; i++) {
			int qType = sc.nextInt();
			int num = sc.nextInt();
			if (qType == 1) {
				myFT.adjust(nums[num-1], 1);
				isOnline[num-1] = true;
				online++;
			} else {
				if (!isOnline[num-1]) {
					System.out.println("NO");
				} else {
					long res = myFT.rsq(nums[num-1]);
					if (online <= k || res > (online - k)) {
						System.out.println("YES");
					} else {
						System.out.println("NO");
					}
				}
			}
		}
		
	}

}


class MyFenwickTree {
	
	long[] ft;
	
	public MyFenwickTree(int n) {
		ft = new long[n];
	}
	
	public void adjust(int k, int v) {
		for (; k < ft.length; k += (k & -k)) {
			ft[k] += v;
		}
	}
	
	public long rsq(int b) {
		long sum = 0;
		for (; b > 0; b -= b & -b) {
			sum += ft[b];
		}
		return sum;
	}
}


class MyIntegerScanner { // coded by Ian Leow, using any other I/O method is not
						// recommended
	BufferedInputStream bis;

	MyIntegerScanner(InputStream is) {
		bis = new BufferedInputStream(is, 1000000);
	}

	public int nextInt() {
		int result = 0;
		try {
			int cur = bis.read();
			if (cur == -1)
				return -1;

			while ((cur < 48 || cur > 57) && cur != 45) {
				cur = bis.read();
			}

			boolean negate = false;
			if (cur == 45) {
				negate = true;
				cur = bis.read();
			}

			while (cur >= 48 && cur <= 57) {
				result = result * 10 + (cur - 48);
				cur = bis.read();
			}

			if (negate) {
				return -result;
			}
			return result;
		} catch (IOException ioe) {
			return -1;
		}
	}
}