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

//package vkcup;


import java.util.Scanner;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Map;
import java.util.PriorityQueue;
public class b{
	public static void main(String args[]){
		FasterScanner sc=new FasterScanner();
		PrintWriter out=new PrintWriter(System.out);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int q=sc.nextInt();
		int t[]=sc.nextIntArray(n);
		boolean[] online = new boolean[n];
		TreeSet<Node> tree = new TreeSet<>(); 
				
		while(q-->0)
		{
			int a=sc.nextInt();
			int id=sc.nextInt();
			if(a==1)
			{
				if(tree.size()<k){
					tree.add(new Node(id,t[id-1]));
				}
				else{
					Node temp = tree.first();
					if(temp.t<t[id-1]){
						tree.remove(temp);
						tree.add(new Node(id, t[id-1]));
					}
				}
			}
			else{
				boolean ans = tree.contains(new Node(id, t[id-1]));
				if(ans){
					out.println("YES");
				}
				else{
					out.println("NO");
				}
			}
		}
	
		out.close();
	} 
	
	
	public static boolean isDoublePalindrome(String string) {
	    int length = string.length();
	    // if length is not even, then it is not a double palindrome
	    if (length % 2 != 0) {
	      return false;
	    }
	    int start = 0;
	    int end = length - 1;
	    int middle = (end - start) / 2;
	    while (start < middle) {
	      // if characters are same, move the pointers, otherwise break and
	      // return false
	      if ((string.charAt(start) == string.charAt(middle))
	          && (string.charAt(start) == string.charAt(end))) {
	        start++;
	        middle--;
	        end--;
	      } else {
	        return false;
	      }
	    }
	    return true;
	}
	public static void swap(int i,int j){
		int t=i;
		i=j;
		j=t;
	}

	public static class FasterScanner {

		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public int read() {
			if (numChars == -1) {
				throw new InputMismatchException();
			}
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = System.in.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0) {
					return -1;
				}
			}
			return buf[curChar++];
		}

		public String nextLine() {
			int c = read();
			while (isSpaceChar(c)) {
				c = read();
			}
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndOfLine(c));
			return res.toString();
		}

		public String nextString() {
			int c = read();
			while (isSpaceChar(c)) {
				c = read();
			}
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}

		public long nextLong() {
			int c = read();
			while (isSpaceChar(c)) {
				c = read();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9') {
					throw new InputMismatchException();
				}
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public int nextInt() {
			int c = read();
			while (isSpaceChar(c)) {
				c = read();
			}
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9') {
					throw new InputMismatchException();
				}
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}

		public int[] nextIntArray(int n) {
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = nextInt();
			}
			return arr;
		}

		public long[] nextLongArray(int n) {
			long[] arr = new long[n];
			for (int i = 0; i < n; i++) {
				arr[i] = nextLong();
			}
			return arr;
		}

		private boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

		private boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}
	}

}


class Node implements Comparable<Node>{
	int id;
	int t;
	public Node(int id,int t){
		this.id = id;
		this.t = t;
	}
	@Override
	public int compareTo(Node o) {
		// TODO Auto-generated method stub
		return this.t-o.t;
	}
	
}


