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

import static java.util.Arrays.fill;

import java.util.*;
import java.io.*;

@SuppressWarnings("unused")
public final class Main {

    public static void main(String[] args) throws IOException {
        new Main().run();
    }

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));;
    PrintWriter out = new PrintWriter(System.out);
    StringTokenizer st = new StringTokenizer("");

    private void run() throws IOException {
        read();
        solve();
        in.close();
        out.close();
    }

    private final String YES = "YES";
    private final String NO = "NO";

    private int n;
    private int k;
    private int q;
    private int[] t;

    private void solve() throws IOException {
        int[] topVal = new int[k];
        int[] topId = new int[k];
        for (int i = 0; i < q; i++) {
            int command = nextInt();
            int id = nextInt() - 1;
            int val = t[id];
            if (command == 1) {
                put(topVal, topId, id, val);
            } else {
                String res = isExists(topId, id) ? YES : NO;
                out.println(res);
            }
        }
    }

    private boolean isExists(int[] a, int e) {
        for (int i = 0; i < a.length; i++) {
            if (a[i] == e) {
                return true;
            }
        }
        return false;
    }

    private void put(int[] topVal, int[] topId, int id, int val) {
        if (val > topVal[0]) {
            topVal[0] = val;
            topId[0] = id;
            for (int i = 1; i < k; i++) {
                if (topVal[i] < topVal[i - 1]) {
                   swap(topVal, i - 1, i);
                   swap(topId, i - 1, i);
                   break;
                }
            }
        }
    }

    private void swap(int[] a, int x, int y) {
        int tmp = a[x];
        a[x] = a[y];
        a[y] = tmp;
    }

    private void read() throws IOException {
        n = nextInt();
        k = nextInt();
        q = nextInt();
        t = new int[n];
        for (int i = 0; i < n; i++) {
            t[i] = nextInt();
        }
    }

    String nextToken() throws IOException {
        while (!st.hasMoreTokens())
            st = new StringTokenizer(in.readLine());
        return st.nextToken();
    }
    int nextInt() throws IOException {
        return Integer.parseInt(nextToken());
    }
    long nextLong() throws IOException {
        return Long.parseLong(nextToken());
    }
    double nextDouble() throws IOException {
        return Double.parseDouble(nextToken());
    }
    String nextLine() throws IOException {
        st = new StringTokenizer("");
        return in.readLine();
    }
}