#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
struct Seg {
int n;
vector<int> t;
Seg(int n) : n(n) { t.assign(4 * n, INF); }
void upd(int i, int v, int idx, int l, int r) {
if (l == r) { t[idx] = v; return; }
int mid = (l + r) / 2;
if (i <= mid) upd(i, v, 2 * idx, l, mid);
else upd(i, v, 2 * idx + 1, mid + 1, r);
t[idx] = min(t[2 * idx], t[2 * idx + 1]);
}
void upd(int i, int v) { upd(i, v, 1, 1, n); }
int qry(int ql, int qr, int idx, int l, int r) {
if (qr < l || r < ql) return INF;
if (ql <= l && r <= qr) return t[idx];
int mid = (l + r) / 2;
return min(qry(ql, qr, 2 * idx, l, mid), qry(ql, qr, 2 * idx + 1, mid + 1, r));
}
int qry(int ql, int qr) { return qry(ql, qr, 1, 1, n); }
};
struct Q {
int l, r, id;
};
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++)
cin >> a[i];
// Tính nxt[i]: chỉ số xuất hiện kế tiếp của a[i]
vector<int> nxt(n + 1, INF);
unordered_map<int, int> last;
for (int i = n; i >= 1; i--){
if (last.count(a[i])) nxt[i] = last[a[i]];
last[a[i]] = i;
}
// Tạo danh sách các sự kiện: (r_th, vị trí i, khoảng cách = nxt[i] - i)
vector<tuple<int, int, int>> ev;
for (int i = 1; i <= n; i++){
if (nxt[i] != INF)
ev.push_back({nxt[i], i, nxt[i] - i});
}
sort(ev.begin(), ev.end(), [](auto &e1, auto &e2){
return get<0>(e1) < get<0>(e2);
});
// Đọc và sắp xếp các truy vấn theo r tăng dần
vector<Q> qs(m);
for (int i = 0; i < m; i++){
int l, r;
cin >> l >> r;
qs[i] = {l, r, i};
}
sort(qs.begin(), qs.end(), [](const Q &q1, const Q &q2){
return q1.r < q2.r;
});
Seg seg(n);
vector<int> ans(m, -1);
int j = 0;
for (auto &q : qs){
while (j < ev.size() && get<0>(ev[j]) <= q.r) {
int pos = get<1>(ev[j]);
int d = get<2>(ev[j]);
seg.upd(pos, d);
j++;
}
int res = seg.qry(q.l, q.r);
if (res == INF) res = -1;
ans[q.id] = res;
}
for (auto x : ans)
cout << x << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBJTkYgPSAxZTk7CgpzdHJ1Y3QgU2VnIHsKICAgIGludCBuOwogICAgdmVjdG9yPGludD4gdDsKICAgIFNlZyhpbnQgbikgOiBuKG4pIHsgdC5hc3NpZ24oNCAqIG4sIElORik7IH0KICAgIHZvaWQgdXBkKGludCBpLCBpbnQgdiwgaW50IGlkeCwgaW50IGwsIGludCByKSB7CiAgICAgICAgaWYgKGwgPT0gcikgeyB0W2lkeF0gPSB2OyByZXR1cm47IH0KICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYgKGkgPD0gbWlkKSB1cGQoaSwgdiwgMiAqIGlkeCwgbCwgbWlkKTsKICAgICAgICBlbHNlICAgICAgICAgdXBkKGksIHYsIDIgKiBpZHggKyAxLCBtaWQgKyAxLCByKTsKICAgICAgICB0W2lkeF0gPSBtaW4odFsyICogaWR4XSwgdFsyICogaWR4ICsgMV0pOwogICAgfQogICAgdm9pZCB1cGQoaW50IGksIGludCB2KSB7IHVwZChpLCB2LCAxLCAxLCBuKTsgfQogICAgaW50IHFyeShpbnQgcWwsIGludCBxciwgaW50IGlkeCwgaW50IGwsIGludCByKSB7CiAgICAgICAgaWYgKHFyIDwgbCB8fCByIDwgcWwpIHJldHVybiBJTkY7CiAgICAgICAgaWYgKHFsIDw9IGwgJiYgciA8PSBxcikgcmV0dXJuIHRbaWR4XTsKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgcmV0dXJuIG1pbihxcnkocWwsIHFyLCAyICogaWR4LCBsLCBtaWQpLCBxcnkocWwsIHFyLCAyICogaWR4ICsgMSwgbWlkICsgMSwgcikpOwogICAgfQogICAgaW50IHFyeShpbnQgcWwsIGludCBxcikgeyByZXR1cm4gcXJ5KHFsLCBxciwgMSwgMSwgbik7IH0KfTsKCnN0cnVjdCBRIHsgCiAgICBpbnQgbCwgciwgaWQ7IAp9OwoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIAogICAgdmVjdG9yPGludD4gYShuICsgMSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgY2luID4+IGFbaV07CiAgICAKICAgIC8vIFTDrW5oIG54dFtpXTogY2jhu4kgc+G7kSB4deG6pXQgaGnhu4duIGvhur8gdGnhur9wIGPhu6dhIGFbaV0KICAgIHZlY3RvcjxpbnQ+IG54dChuICsgMSwgSU5GKTsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IGxhc3Q7CiAgICBmb3IgKGludCBpID0gbjsgaSA+PSAxOyBpLS0pewogICAgICAgIGlmIChsYXN0LmNvdW50KGFbaV0pKSBueHRbaV0gPSBsYXN0W2FbaV1dOwogICAgICAgIGxhc3RbYVtpXV0gPSBpOwogICAgfQogICAgCiAgICAvLyBU4bqhbyBkYW5oIHPDoWNoIGPDoWMgc+G7sSBraeG7h246IChyX3RoLCB24buLIHRyw60gaSwga2hv4bqjbmcgY8OhY2ggPSBueHRbaV0gLSBpKQogICAgdmVjdG9yPHR1cGxlPGludCwgaW50LCBpbnQ+PiBldjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgaWYgKG54dFtpXSAhPSBJTkYpCiAgICAgICAgICAgIGV2LnB1c2hfYmFjayh7bnh0W2ldLCBpLCBueHRbaV0gLSBpfSk7CiAgICB9CiAgICBzb3J0KGV2LmJlZ2luKCksIGV2LmVuZCgpLCBbXShhdXRvICZlMSwgYXV0byAmZTIpewogICAgICAgIHJldHVybiBnZXQ8MD4oZTEpIDwgZ2V0PDA+KGUyKTsKICAgIH0pOwogICAgCiAgICAvLyDEkOG7jWMgdsOgIHPhuq9wIHjhur9wIGPDoWMgdHJ1eSB24bqlbiB0aGVvIHIgdMSDbmcgZOG6p24KICAgIHZlY3RvcjxRPiBxcyhtKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKXsKICAgICAgICBpbnQgbCwgcjsKICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgIHFzW2ldID0ge2wsIHIsIGl9OwogICAgfQogICAgc29ydChxcy5iZWdpbigpLCBxcy5lbmQoKSwgW10oY29uc3QgUSAmcTEsIGNvbnN0IFEgJnEyKXsKICAgICAgICByZXR1cm4gcTEuciA8IHEyLnI7CiAgICB9KTsKICAgIAogICAgU2VnIHNlZyhuKTsKICAgIHZlY3RvcjxpbnQ+IGFucyhtLCAtMSk7CiAgICBpbnQgaiA9IDA7CiAgICBmb3IgKGF1dG8gJnEgOiBxcyl7CiAgICAgICAgd2hpbGUgKGogPCBldi5zaXplKCkgJiYgZ2V0PDA+KGV2W2pdKSA8PSBxLnIpIHsKICAgICAgICAgICAgaW50IHBvcyA9IGdldDwxPihldltqXSk7CiAgICAgICAgICAgIGludCBkID0gZ2V0PDI+KGV2W2pdKTsKICAgICAgICAgICAgc2VnLnVwZChwb3MsIGQpOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGludCByZXMgPSBzZWcucXJ5KHEubCwgcS5yKTsKICAgICAgICBpZiAocmVzID09IElORikgcmVzID0gLTE7CiAgICAgICAgYW5zW3EuaWRdID0gcmVzOwogICAgfQogICAgCiAgICBmb3IgKGF1dG8geCA6IGFucykKICAgICAgICBjb3V0IDw8IHggPDwgIlxuIjsKICAgIAogICAgcmV0dXJuIDA7Cn0K