#include <bits/stdc++.h>
auto int_from(std::istream &in) -> int {
  int x;
  in >> x;
  return x;
}
auto lng_from(std::istream &in) -> long long {
  long long x;
  in >> x;
  return x;
}
auto str_from(std::istream &in) -> std::string {
  std::string x;
  in >> x;
  return x;
}
auto chr_from(std::istream &in) -> char {
  char x;
  in >> x;
  return x;
}
std::vector<int> v;
struct cmp {
  bool operator()(int a, int b) { return v[a] < v[b]; }
};
int main() {
  std::ios::sync_with_stdio(0);
  std::cin.tie(0);
  int n{int_from(std::cin)}, k{int_from(std::cin)}, q{int_from(std::cin)};
  for (int i{0}; i <= n - 1; i++) {
    v.emplace_back(int_from(std::cin));
  }
  std::set<int, cmp> on;
  while (q--) {
    int t{int_from(std::cin)}, idx{int_from(std::cin)};
    if (t == 1) {
      on.insert(idx - 1);
      if (static_cast<int>(on.size()) > k) {
        on.erase(on.begin());
      }
    } else if (t == 2) {
      if (on.find(idx - 1) == on.end()) {
        std::cout << "NO\n";
      } else {
        std::cout << "YES\n";
      }
    }
  }
  return 0;
}
