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

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<cstring>
#include<string>
#include<math.h>
#include<algorithm>
#include<set>
#include<vector>
#define LL long long
#define INF 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
struct Node
{
    int num,value;
};
int Arr[150005];
int n=0,k=0,j=0,q=0,i=0,fir=0,sec=0,val=0;
int vis[8],time=1;
void solve()
{
    for(int i=1;i<time;i++){
        if(vis[i]==sec){
            printf("YES\n");
            return ;
        }
    }
    printf("NO\n");
}
int main()
{

    scanf("%d%d%d",&n,&k,&q);
    for(i=1;i<=n;i++){
        scanf("%d",&val);
        Arr[i]=val;
    }
    for(i=1;i<=q;i++){
        scanf("%d%d",&fir,&sec);
        if(fir==1){
            if(time<=k){
               vis[time]=sec;time++;
            }
            else if(time>k){
                int minm=INF,flag=0;
                for(j=1;j<=k;j++){
                    if(Arr[vis[i]]<Arr[sec]){
                       minm=min(minm,Arr[vis[i]]);
                       flag=j;
                    }
                }
                vis[flag]=sec;
           }
        }
        else if(fir==2){
                solve();
        }
    }
    return 0;
}

 	 			   	 	 	  	    			 				 	