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>
int topK[6];
int T[150005];
int N, K, Q;
int inTopK = 0;
int main() {
  scanf("%d", &N);
  scanf("%d", &K);
  scanf("%d", &Q);
  for (int i = 0; i < 6; i++) topK[i] = -1;
  for (int i = 0; i < N; i++) scanf("%d", &(T[i]));
  for (int i = 0; i < Q; i++) {
    int type, idx;
    scanf("%d %d", &type, &idx);
    idx--;
    if (type == 2) {
      bool found = 0;
      for (int j = 0; j < inTopK; j++)
        if (topK[j] == idx) {
          found = 1;
          break;
        }
      printf("%s\n", found ? "YES" : "NO");
    } else if (type == 1) {
      int minInTopK = -1;
      for (int j = 0; j < inTopK; j++) {
        if (minInTopK == -1 || T[topK[j]] < T[topK[minInTopK]]) {
          minInTopK = j;
        }
      }
      if (minInTopK == -1) {
        topK[0] = idx;
        inTopK = 1;
      } else if (inTopK < K) {
        topK[inTopK] = idx;
        inTopK++;
      } else if (T[topK[minInTopK]] < T[idx]) {
        topK[minInTopK] = idx;
      }
    }
  }
  return (0);
}
