#include <bits/stdc++.h>
using namespace std;
bool prime(int x) {
  if (x < 2) return false;
  for (int i = 2; i <= sqrt(x); i++) {
    if ((x % i) == 0) return false;
  }
  return true;
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
int lcm(int a, int b) {
  int temp = gcd(a, b);
  return temp ? (a / temp * b) : 0;
}
long long power(long long x, long long y, long long mod) {
  if (y == 0)
    return 1;
  else if (y % 2 == 0)
    return (power(x, y / 2, mod) * power(x, y / 2, mod)) % mod;
  else
    return (x * (power(x, y / 2, mod) * power(x, y / 2, mod)) % mod) % mod;
}
long long countDivisors(long long p, long long first, long long second) {
  long long st;
  if (first % p == 0)
    st = first;
  else {
    long long temp = first % p;
    if (temp > 0)
      st = first + (p - temp);
    else
      st = first - temp;
  }
  long long res = 1;
  if (st > second) return 0;
  res += (second - st) / p;
  return res;
}
int main() {
  int n, q, k;
  priority_queue<long long> pq;
  cin >> n >> k >> q;
  long long t[150099];
  bool b[150099] = {false};
  for (int i = 1; i <= n; i++) cin >> t[i];
  long long mn, cnt = 0;
  for (int i = 0; i < q; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    if (x == 1) {
      b[y] = 1;
      if (cnt < k) {
        cnt++;
        pq.push(-1 * t[y]);
      } else {
        int qq = -1 * pq.top();
        if (t[y] > qq) {
          pq.pop();
          pq.push(-1 * t[y]);
        }
      }
    } else {
      if (b[y] && cnt && t[y] >= -1 * pq.top()) {
        printf("YES \n");
      } else
        printf("NO \n");
    }
  }
  return 0;
}
