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;
long long a[100009];
map<long long, long long> mp;
map<long long, long long> mp1;
int main() {
  cin.sync_with_stdio(false);
  long long i, j, k, l, c, v, b[1000], aa[1009], bb[1000], n, m, r, t;
  long long x1, x2, y1, y2, x3, x4, x5, x6;
  string s, s1, s2, s3, ss[10000];
  mp.clear();
  mp1.clear();
  set<long long> mn;
  set<long long>::iterator it;
  while (cin >> n >> m >> k) {
    for (i = 0; i < n; i++) {
      cin >> r;
      mp[r] = i + 1;
      mp1[i + 1] = r;
    }
    j = 0;
    for (i = 0; i < k; i++) {
      cin >> r >> t;
      if (r == 1) {
        j++;
        if (j > m) {
          for (it = mn.begin(), l = 0; l < 1; ++it, l++) {
            n = *it;
          }
          if (mp1[t] > n) {
            mn.insert(mp1[t]);
            mn.erase(n);
          }
        } else {
          mn.insert(mp1[t]);
        }
      } else {
        it = mn.find(mp1[t]);
        if (mp1[t] == *it)
          cout << "YES" << endl;
        else
          cout << "NO" << endl;
      }
    }
  }
}
