#include <bits/stdc++.h>
typedef struct slot_st *slot_t;
struct slot_st {
  slot_t prev;
  slot_t next;
  unsigned long id;
  unsigned long rate;
  char in_table;
};
struct slot_st friends[150005];
slot_t first;
unsigned long n, k, q;
void slot_set_online(slot_t cs) {
  slot_t s, last;
  unsigned long i;
  if (!first) {
    cs->in_table = 1;
    first = cs;
    return;
  }
  if (cs->in_table) {
    if (cs->prev) cs->prev->next = cs->next;
    if (cs->next) cs->next->prev = cs->prev;
    if (!cs->prev) first = cs->next;
    cs->in_table = 0;
  }
  s = first;
  i = 0;
  while (s) {
    i++;
    if (!cs->in_table && (cs->rate > s->rate)) {
      cs->prev = s->prev;
      cs->next = s;
      if (cs->prev)
        cs->prev->next = cs;
      else
        first = cs;
      cs->next->prev = cs;
      cs->in_table = 1;
      i++;
    }
    last = s;
    s = s->next;
  }
  if (cs->in_table) {
    if (i > k) {
      last->prev->next = NULL;
      last->prev = NULL;
      last->next = NULL;
      last->in_table = 0;
    }
  } else {
    if (i < k) {
      last->next = cs;
      cs->prev = last;
      cs->in_table = 1;
    }
  }
}
int main() {
  unsigned long type, id, i;
  scanf("%lu %lu %lu", &n, &k, &q);
  for (i = 0; i < n; i++) {
    friends[i].id = i;
    friends[i].in_table = 0;
    scanf("%lu", &friends[i].rate);
    friends[i].prev = NULL;
    friends[i].next = NULL;
  }
  for (i = 0; i < q; i++) {
    scanf("%lu %lu", &type, &id);
    if (type == 1) {
      slot_set_online(&friends[id - 1]);
    } else {
      if (friends[id - 1].in_table)
        printf("YES\n");
      else
        printf("NO\n");
    }
  }
  return 0;
}
