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.util.*;
import java.io.*;
public class Bear_and_Displayed_Friends
{
	public static void main(String args[]) throws Exception
	{
		BufferedReader f=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=new StringTokenizer(f.readLine());
		int runs=Integer.parseInt(st.nextToken());
		int max=Integer.parseInt(st.nextToken());
		int queries=Integer.parseInt(st.nextToken());
		int[] relations=new int[runs];
		st=new StringTokenizer(f.readLine());
		for(int x=0;x<runs;x++)
			relations[x]=Integer.parseInt(st.nextToken());
		Set<Integer> set=new HashSet<Integer>();
		PriorityQueue<thing> queue=new PriorityQueue<thing>();
		for(int x=0;x<queries;x++)
		{
			st=new StringTokenizer(f.readLine());
			int type=Integer.parseInt(st.nextToken());
			int id=Integer.parseInt(st.nextToken());
			if(type==1)
			{
				set.add(id);
				queue.add(new thing(id,relations[id-1]));
				if(set.size()>max)
					set.remove(queue.poll().id);
			}
			else
				System.out.println(set.contains(id)?"YES":"NO");
		}
	}
}
class thing implements Comparable<thing>
{
	int id,relation;
	public thing(int a,int b)
	{
		id=a;
		relation=b;
	}
	public int compareTo(thing a)
	{
		if(relation<a.relation) return -1;
		if(relation>a.relation) return 1;
		return 0;
	}
}