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.math.*;
import java.io.*;
import java.util.*;
public class VKCUP2
{
	StringTokenizer st;
	BufferedReader in;
	PrintWriter ob;
	public static void main(String args[])throws IOException {
		new VKCUP2().run();
	}
	void run()throws IOException  {
		//in=new BufferedReader(new FileReader("input.txt"));
		//ob=new PrintWriter("output.txt");
		in=new BufferedReader(new InputStreamReader(System.in));
		ob=new PrintWriter(System.out);
		solve();
		ob.flush();
	}
	void solve()throws IOException {
		read();
		int n=ni();
		int k=ni();
		int q=ni();
		read();
		int a[]=new int[n+1];
		for(int i=1;i<=n;i++)
			a[i]=ni();
		TreeSet<Node> ts=new TreeSet<Node>(new Comparator<Node>(){
			public int compare(Node a,Node b){
				return a.t-b.t;
			}
		});
		boolean vis[]=new boolean[n+1];
		int ele=0;
		while(q-->0){
			read();
			int id=ni();
			int m=ni();
			if(id==1){
					if(ts.isEmpty()==true || k>ele){
						Node temp=new Node();
						temp.v=m;
						temp.t=a[m];
						vis[m]=true;
						ts.add(temp);
						ele+=1;
					}
					else{
						Node z=ts.first();
						if(z.t<a[m]){
							vis[z.v]=false;
							ts.remove((Node)z);
							Node x=new Node();
							x.v=m;
							x.t=a[m];
							ts.add(x);
							vis[m]=true;
						}
					}
			}
			else{
					ob.println(vis[m]==true?"YES":"NO");
			}
		}
	}
	void read()throws IOException  {
		st=new StringTokenizer(in.readLine());
	}
	int ni(){
		return Integer.parseInt(st.nextToken());
	}
	long nl(){
		return Long.parseLong(st.nextToken());
	}
	double nd(){
		return Double.parseDouble(st.nextToken());
	}
	String ns(){
		return st.nextToken();
	}
	char nc(){
		return st.nextToken().charAt(0);
	}
	int[] nia(int n)throws IOException {
		int a[]=new int[n];
		read();
		for(int i=0;i<n;i++){
			a[i]=Integer.parseInt(st.nextToken());
		}
		return a;
	}
	long[] nla(int n)throws IOException {
		long a[]=new long[n];
		read();
		for(int i=0;i<n;i++){
			a[i]=Long.parseLong(st.nextToken());
		}
		return a;
	}
}
class Node{
	int v;
	int t;
}