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>
#define ll long long int
#define pi 3.141592653

using namespace std;
ll count(ll n)
{
    ll c=0;
    while(n!=0)
    {
        
        c++;
        n=n/10;
    }
    
    return c;
}
int isPrime(ll n) 
{ 
    // Corner case 
    if (n <= 1) 
        return 0; 
  
    // Check from 2 to n-1 
    for (ll i = 2; i < n; i++) 
        if (n % i == 0) 
            return 0; 
  
    return 1; 
} 
ll modFact(ll n, ll p) 
{ 
    if (n >= p) 
        return 0; 
  
    ll result = 1; 
    for (ll i = 1; i <= n; i++) 
        result = (result * i) % p; 
  
    return result; 
} 
ll divisor(ll n)
{   ll h=1;
    for(ll i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            h=i;
            break;
        }
    }
    return h;
}


ll findGCD(ll arr[], ll n) 
{ 
    ll result = arr[0]; 
    for (ll i = 1; i < n; i++) 
    { 
        result =__gcd(arr[i], result); 
  
        if(result == 1) 
        { 
           return 1; 
        } 
    } 
    return result; 
} 
ll countDivisors(ll n) 
{ 
    ll cnt = 0; 
    for (ll i = 1; i <= sqrt(n); i++) { 
        if (n % i == 0) { 
            // If divisors are equal, 
            // count only one 
            if (n / i == i) 
                cnt++; 
  
            else // Otherwise count both 
                cnt = cnt + 2; 
        } 
    } 
    return cnt; 
} 
// Returns true if str1[] is a subsequence of str2[]. m is 
// length of str1 and n is length of str2 
bool isSubSequence(string str1, string  str2, ll m, ll n) 
{ 
    // Base Cases 
    if (m == 0) return true; 
    if (n == 0) return false; 
  
    // If last characters of two strings are matching 
    if (str1[m-1] == str2[n-1]) 
        return isSubSequence(str1, str2, m-1, n-1); 
  
    // If last characters are not matching 
    return isSubSequence(str1, str2, m, n-1); 
} 


bool isPerfectSquare(long double x) 
{   
  // Find floating point value of  
  // square root of x. 
  long double sr = sqrt(x); 
  
  // If square root is an integer 
  return ((sr - floor(sr)) == 0); 
} 
// Returns true if s1 is substring of s2 
ll isSubstring(string s1, string s2) 
{ 
    ll M = s1.length(); 
    ll N = s2.length(); 
  
    /* A loop to slide pat[] one by one */
   for (ll i = 0; i <= N - M; i++) { 
        ll j; 
  
        /* For current index i, check for 
 pattern match */
        for (j = 0; j < M; j++) 
            if (s2[i + j] != s1[j]) 
                break; 
  
        if (j == M) 
            return i; 
    } 
  
    return -1; 
} 
ll countFreq(string &pat, string &txt) 
{ 
    ll M = pat.length(); 
    ll N = txt.length(); 
    ll res = 0; 
    
    /* A loop to slide pat[] one by one */
   for (ll i = 0; i <= N - M; i++) 
    {  
        /* For current index i, check for  
           pattern match */
       ll j; 
        for (j = 0; j < M; j++) 
            if (txt[i+j] != pat[j]) 
                break; 
   
        // if pat[0...M-1] = txt[i, i+1, ...i+M-1] 
        if (j == M)   
        { 
           res++; 
           j = 0; 
        } 
    } 
    return res; 
} 
ll sum(ll arr[],ll i,ll j)
{   ll s=0;
    for(ll k=i;k<=j;k++)
    {
        s=s+arr[k];
    }
    return s;
}
ll modularExponentiation(ll x,ll n,ll M)
{
    if(n==0)
        return 1;
    else if(n%2 == 0)        //n is even
        return modularExponentiation((x*x)%M,n/2,M);
    else                             //n is odd
        return (x*modularExponentiation((x*x)%M,(n-1)/2,M))%M;

}

ll check(string s,string s1)
{
    string s2,s3;
    
    s3=s1;
    ll c=0;
    ll n=s3.length();
    
    while(s3!=s)
    {
       
       s3.push_back(s3[0]);
       s3.erase(0,1);
       c++;
       if(c>n)
       {
           c=-1;
           break;
       }
       
    }
    return c;
}

  int main()
{
    ios_base::sync_with_stdio(false);
    cout.tie(NULL);
    cin.tie(NULL);
  
ll n,k,q;
cin>>n>>k>>q;
ll c[n+1]={0};
ll t[k+1];
for(ll i=1;i<=n;i++)
{
    cin>>t[i];
}
vector<ll>show;
while(q--)
{
    ll type,x;
    cin>>type;
    if(type==1)
    {
        cin>>x;
        if(c[x]==0)
       { c[x]=1;
        show.push_back(t[x]);
          sort(show.begin(),show.end());
          reverse(show.begin(),show.end());
          if(show.size()>k)
          show.pop_back();
       }
    }
    if(type==2)
    {
        cin>>x;
        if(c[x]==1)
        {  
            auto it=find(show.begin(),show.end(),t[x]);
            if(it==show.end())
            cout<<"NO"<<endl;
            else
            cout<<"YES"<<endl;
        }
        else
        cout<<"NO"<<endl;
    }
  
}

return 0;
}
 


     
   
       
     
   