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;
int ara[100000 + 50001];
bool vis[100000 + 50001];
struct st {
  int idx, value;
} s[100000 + 50001];
bool cmp(st a, st b) {
  if (a.value > b.value)
    return true;
  else
    return false;
}
int main() {
  int n, k, q;
  while (cin >> n >> k >> q) {
    for (int i = 0; i < n; i++) {
      scanf("%d", &s[i].value);
      s[i].idx = i + 1;
      vis[i + 1] = false;
    }
    sort(s, s + n, cmp);
    for (int i = 0; i < n; i++) {
      ara[s[i].idx] = i + 1;
    }
    int a, b, cnt = 0, x;
    int mn = 0;
    for (int i = 0; i < q; i++) {
      scanf("%d%d", &a, &b);
      if (a == 1) {
        vis[b] = true;
        cnt++;
        if (mn < ara[b]) {
          mn = ara[b];
          x = b;
        }
        if (cnt > k) {
          vis[x] = false;
          cnt--;
        }
      } else if (a == 2) {
        if (vis[b] == true)
          puts("YES");
        else
          puts("NO");
      }
    }
  }
  return 0;
}
