#include <iostream>
#include <vector>
#include <algorithm>
#include <memory>
 
struct Range {
    int start, end;
    bool Include(const Range& outer) const { return outer.start <= start && end <= outer.end; }
    bool Exclude(const Range& outer) const { return outer.end < start || end < outer.start; }
    bool IsLeaf() const { return start == end; }
    int Count() const { return 1 + end - start; }
};
 
class Node {
public:
    inline static std::vector<int> InitArray;
 
public:
    explicit Node(Range r) : range(r) {
        if (range.IsLeaf()) {
            array.emplace_back(InitArray[range.start]);
            return;
        }
        int mid = range.start + (range.end - range.start) / 2;
        left = std::make_unique<Node>(Range{ range.start, mid });
        right = std::make_unique<Node>(Range{ mid + 1, range.end });
        array.resize(range.Count());
        std::merge(left->array.begin(), left->array.end(), right->array.begin(), right->array.end(), array.begin());
    }
    int LessCount(const Range& query, int value) const {
        if (range.Exclude(query)) return 0;
        if (range.Include(query)) {
            return static_cast<int>(std::lower_bound(array.begin(), array.end(), value) - array.begin());
        }
        return left->LessCount(query, value) + right->LessCount(query, value);
    }
    int GetMinimum() const { return array.front(); }
    int GetMaximum() const { return array.back(); }
 
private:
    Range range;
    std::unique_ptr<Node> left;
    std::unique_ptr<Node> right;
    std::vector<int> array;
};
 
int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);
    int n, q;
    std::cin >> n >> q;
 
	Node::InitArray.resize(n);
    for (int i = 0; i < n; i++) std::cin >> Node::InitArray[i];
 
    Node root(Range{ 0, n - 1 });
    const int minValue = root.GetMinimum();
    const int maxValue = root.GetMaximum();
 
    for (int i = 0; i < q; ++i) {
        int l, r, k;
        std::cin >> l >> r >> k;
        const Range query{ l - 1, r - 1 };
 
        int low = minValue;
        for (int high = maxValue, mid; low < high; ) {
            mid = low + (high - low) / 2;
            if (root.LessCount(query, mid + 1) < k) {
                low = mid + 1;
            }
            else {
                high = mid;
            }
        }
        std::cout << low << '\n';
    }
 
    return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IFJhbmdlIHsKICAgIGludCBzdGFydCwgZW5kOwogICAgYm9vbCBJbmNsdWRlKGNvbnN0IFJhbmdlJiBvdXRlcikgY29uc3QgeyByZXR1cm4gb3V0ZXIuc3RhcnQgPD0gc3RhcnQgJiYgZW5kIDw9IG91dGVyLmVuZDsgfQogICAgYm9vbCBFeGNsdWRlKGNvbnN0IFJhbmdlJiBvdXRlcikgY29uc3QgeyByZXR1cm4gb3V0ZXIuZW5kIDwgc3RhcnQgfHwgZW5kIDwgb3V0ZXIuc3RhcnQ7IH0KICAgIGJvb2wgSXNMZWFmKCkgY29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9CiAgICBpbnQgQ291bnQoKSBjb25zdCB7IHJldHVybiAxICsgZW5kIC0gc3RhcnQ7IH0KfTsKCmNsYXNzIE5vZGUgewpwdWJsaWM6CiAgICBpbmxpbmUgc3RhdGljIHN0ZDo6dmVjdG9yPGludD4gSW5pdEFycmF5OwoKcHVibGljOgogICAgZXhwbGljaXQgTm9kZShSYW5nZSByKSA6IHJhbmdlKHIpIHsKICAgICAgICBpZiAocmFuZ2UuSXNMZWFmKCkpIHsKICAgICAgICAgICAgYXJyYXkuZW1wbGFjZV9iYWNrKEluaXRBcnJheVtyYW5nZS5zdGFydF0pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGludCBtaWQgPSByYW5nZS5zdGFydCArIChyYW5nZS5lbmQgLSByYW5nZS5zdGFydCkgLyAyOwogICAgICAgIGxlZnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGU+KFJhbmdleyByYW5nZS5zdGFydCwgbWlkIH0pOwogICAgICAgIHJpZ2h0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlPihSYW5nZXsgbWlkICsgMSwgcmFuZ2UuZW5kIH0pOwogICAgICAgIGFycmF5LnJlc2l6ZShyYW5nZS5Db3VudCgpKTsKICAgICAgICBzdGQ6Om1lcmdlKGxlZnQtPmFycmF5LmJlZ2luKCksIGxlZnQtPmFycmF5LmVuZCgpLCByaWdodC0+YXJyYXkuYmVnaW4oKSwgcmlnaHQtPmFycmF5LmVuZCgpLCBhcnJheS5iZWdpbigpKTsKICAgIH0KICAgIGludCBMZXNzQ291bnQoY29uc3QgUmFuZ2UmIHF1ZXJ5LCBpbnQgdmFsdWUpIGNvbnN0IHsKICAgICAgICBpZiAocmFuZ2UuRXhjbHVkZShxdWVyeSkpIHJldHVybiAwOwogICAgICAgIGlmIChyYW5nZS5JbmNsdWRlKHF1ZXJ5KSkgewogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Omxvd2VyX2JvdW5kKGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgpLCB2YWx1ZSkgLSBhcnJheS5iZWdpbigpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxlZnQtPkxlc3NDb3VudChxdWVyeSwgdmFsdWUpICsgcmlnaHQtPkxlc3NDb3VudChxdWVyeSwgdmFsdWUpOwogICAgfQogICAgaW50IEdldE1pbmltdW0oKSBjb25zdCB7IHJldHVybiBhcnJheS5mcm9udCgpOyB9CiAgICBpbnQgR2V0TWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5LmJhY2soKTsgfQoKcHJpdmF0ZToKICAgIFJhbmdlIHJhbmdlOwogICAgc3RkOjp1bmlxdWVfcHRyPE5vZGU+IGxlZnQ7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZT4gcmlnaHQ7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGFycmF5Owp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmNpbi50aWUobnVsbHB0ciktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpbnQgbiwgcTsKICAgIHN0ZDo6Y2luID4+IG4gPj4gcTsKCglOb2RlOjpJbml0QXJyYXkucmVzaXplKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHN0ZDo6Y2luID4+IE5vZGU6OkluaXRBcnJheVtpXTsKCiAgICBOb2RlIHJvb3QoUmFuZ2V7IDAsIG4gLSAxIH0pOwogICAgY29uc3QgaW50IG1pblZhbHVlID0gcm9vdC5HZXRNaW5pbXVtKCk7CiAgICBjb25zdCBpbnQgbWF4VmFsdWUgPSByb290LkdldE1heGltdW0oKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7ICsraSkgewogICAgICAgIGludCBsLCByLCBrOwogICAgICAgIHN0ZDo6Y2luID4+IGwgPj4gciA+PiBrOwogICAgICAgIGNvbnN0IFJhbmdlIHF1ZXJ5eyBsIC0gMSwgciAtIDEgfTsKCiAgICAgICAgaW50IGxvdyA9IG1pblZhbHVlOwogICAgICAgIGZvciAoaW50IGhpZ2ggPSBtYXhWYWx1ZSwgbWlkOyBsb3cgPCBoaWdoOyApIHsKICAgICAgICAgICAgbWlkID0gbG93ICsgKGhpZ2ggLSBsb3cpIC8gMjsKICAgICAgICAgICAgaWYgKHJvb3QuTGVzc0NvdW50KHF1ZXJ5LCBtaWQgKyAxKSA8IGspIHsKICAgICAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBoaWdoID0gbWlkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHN0ZDo6Y291dCA8PCBsb3cgPDwgJ1xuJzsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==