#include <iostream>
#include <vector>
#include <string>
#include <functional> // std::hash
using namespace std;
// Hàm băm đơn giản cho số nguyên
size_t hash_int(int val) {
hash<int> hasher;
return hasher(val);
}
int main() {
int n, q;
cin >> n >> q;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
// Kích thước bảng băm (nên chọn số nguyên tố lớn hơn n để giảm va chạm)
int hash_table_size = 2 * n + 1;
vector<vector<int>> hash_table(hash_table_size);
// Xây dựng bảng băm
for (int i = 0; i < n; ++i) {
size_t hash_value = hash_int(a[i]) % hash_table_size;
hash_table[hash_value].push_back(i + 1); // Lưu trữ chỉ số 1-based
}
for (int i = 0; i < q; ++i) {
string type_str;
int type_val, y_val;
cin >> type_str >> type_val >> y_val;
size_t hash_value = hash_int(y_val) % hash_table_size;
vector<int>& indices = hash_table[hash_value];
int first = -1;
int last = -1;
for (int index : indices) {
if (a[index - 1] == y_val) {
if (first == -1) {
first = index;
}
last = index;
}
}
if (type_val == 1) {
cout << first << endl;
} else if (type_val == 2) {
cout << last << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4gLy8gc3RkOjpoYXNoCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gSMOgbSBixINtIMSRxqFuIGdp4bqjbiBjaG8gc+G7kSBuZ3V5w6puCnNpemVfdCBoYXNoX2ludChpbnQgdmFsKSB7CiAgICBoYXNoPGludD4gaGFzaGVyOwogICAgcmV0dXJuIGhhc2hlcih2YWwpOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBxOwogICAgY2luID4+IG4gPj4gcTsKCiAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KCiAgICAvLyBLw61jaCB0aMaw4bubYyBi4bqjbmcgYsSDbSAobsOqbiBjaOG7jW4gc+G7kSBuZ3V5w6puIHThu5EgbOG7m24gaMahbiBuIMSR4buDIGdp4bqjbSB2YSBjaOG6oW0pCiAgICBpbnQgaGFzaF90YWJsZV9zaXplID0gMiAqIG4gKyAxOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBoYXNoX3RhYmxlKGhhc2hfdGFibGVfc2l6ZSk7CgogICAgLy8gWMOieSBk4buxbmcgYuG6o25nIGLEg20KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgc2l6ZV90IGhhc2hfdmFsdWUgPSBoYXNoX2ludChhW2ldKSAlIGhhc2hfdGFibGVfc2l6ZTsKICAgICAgICBoYXNoX3RhYmxlW2hhc2hfdmFsdWVdLnB1c2hfYmFjayhpICsgMSk7IC8vIEzGsHUgdHLhu68gY2jhu4kgc+G7kSAxLWJhc2VkCiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxOyArK2kpIHsKICAgICAgICBzdHJpbmcgdHlwZV9zdHI7CiAgICAgICAgaW50IHR5cGVfdmFsLCB5X3ZhbDsKICAgICAgICBjaW4gPj4gdHlwZV9zdHIgPj4gdHlwZV92YWwgPj4geV92YWw7CgogICAgICAgIHNpemVfdCBoYXNoX3ZhbHVlID0gaGFzaF9pbnQoeV92YWwpICUgaGFzaF90YWJsZV9zaXplOwogICAgICAgIHZlY3RvcjxpbnQ+JiBpbmRpY2VzID0gaGFzaF90YWJsZVtoYXNoX3ZhbHVlXTsKCiAgICAgICAgaW50IGZpcnN0ID0gLTE7CiAgICAgICAgaW50IGxhc3QgPSAtMTsKCiAgICAgICAgZm9yIChpbnQgaW5kZXggOiBpbmRpY2VzKSB7CiAgICAgICAgICAgIGlmIChhW2luZGV4IC0gMV0gPT0geV92YWwpIHsKICAgICAgICAgICAgICAgIGlmIChmaXJzdCA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gaW5kZXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsYXN0ID0gaW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICh0eXBlX3ZhbCA9PSAxKSB7CiAgICAgICAgICAgIGNvdXQgPDwgZmlyc3QgPDwgZW5kbDsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVfdmFsID09IDIpIHsKICAgICAgICAgICAgY291dCA8PCBsYXN0IDw8IGVuZGw7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9