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 <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{

    bool vis[150005] = {0};
    vector < pair<int,int>  > cur;


    int a[150005] = {0};
    int n , k , q;
    scanf("%d%d%d",&n,&k,&q);
    for(int i =0 ; i < n ; i++)
        scanf("%d",a+i);
    for(int i =0 ; i < q; i ++){
        int t , id ;
        scanf("%d%d",&t,&id);
        id--;

        if(t == 1){
            int first =0 , last = min((unsigned int)k,cur.size()) ;

            int target = a[id];
            int e = -1;
            while(first < last){
                int mid = (first+last)/2;
                int s = cur[mid].first;
                if(target > s){
                     e = mid;
                     last = mid-1;
                }else if(target < s){
                    first = mid+1;
                }
            }

             if ( e != -1){

                cur.insert(cur.begin()+e,make_pair(target,id));

                if(cur.size() > k){
                    vis[cur[k].second] = 0 ;
                }
                vis[id] = 1;

            }
            if(cur.size() == 0 || (cur.size() < k && e == -1)){
                cur.push_back(make_pair(target,id));
                vis[id] = 1;
            }

        }else{

            if(vis[id])
                puts("YES");
            else puts("NO");
        }
    }
    return 0;
}

