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;
const int mx = (int)1e6 + 5;
struct nd {
  int xi, vlu;
  nd() { vlu = 0, xi = 0; }
};
int pp[mx];
int sts[mx];
class AA {
 public:
  bool operator()(const nd& NN, const nd& Nb) const { return Nb.vlu < NN.vlu; }
};
priority_queue<nd, vector<nd>, AA> pq;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, k, q;
  while (!pq.empty()) pq.pop();
  memset(sts, 0, sizeof sts);
  n = ({
    int a;
    scanf("%d", &a);
    a;
  });
  k = ({
    int a;
    scanf("%d", &a);
    a;
  });
  q = ({
    int a;
    scanf("%d", &a);
    a;
  });
  int pk = min(6, n);
  if (k > pk) k = pk;
  for (__typeof(n) i = (1); i <= n; ++i) {
    pp[i] = ({
      int a;
      scanf("%d", &a);
      a;
    });
    sts[i] = 0;
  }
  for (__typeof(q) i = (1); i <= q; ++i) {
    int qq, qp;
    qq = ({
      int a;
      scanf("%d", &a);
      a;
    });
    qp = ({
      int a;
      scanf("%d", &a);
      a;
    });
    if (qq == 1) {
      if (pq.size() < k) {
        nd NN;
        NN.vlu = pp[qp];
        NN.xi = qp;
        pq.push(NN);
        sts[qp] = 1;
      } else {
        nd Ak = pq.top();
        pq.pop();
        sts[Ak.xi] = 0;
        Ak.vlu = pp[qp];
        Ak.xi = qp;
        pq.push(Ak);
        sts[qp] = 1;
      }
    } else if (qq == 2) {
      if (sts[qp] == 0)
        printf("NO\n");
      else
        printf("YES\n");
    }
  }
  return 0;
}
