#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
using namespace std;
struct Node
{
int max_g, min_f, lazy;
};
const int maxn = 2e5;
const int INF = 1e9;
int n, q, ans[maxn + 10];
ll a[maxn + 10];
vector<int> pos[maxn + 10];
Node tree[4 * maxn + 10];
void push(int id, int l, int r)
{
if (!tree[id].lazy)
return ;
int m = l + r >> 1;
tree[id << 1].lazy = tree[id << 1 | 1].lazy = tree[id].lazy;
tree[id << 1].max_g = tree[id << 1 | 1].max_g = tree[id].lazy;
tree[id << 1].min_f = l - tree[id].lazy + 1;
tree[id << 1 | 1].min_f = m - tree[id].lazy + 2;
tree[id].lazy = 0;
}
void update(int id, int l, int r, int u, int v, int val)
{
if (r < u || l > v)
return ;
if (u <= l && r <= v)
{
tree[id].max_g = val;
tree[id].min_f = l - val + 1;
tree[id].lazy = val;
return ;
}
push(id, l, r);
int m = l + r >> 1;
update(id << 1, l, m, u, v, val);
update(id << 1 | 1, m + 1, r, u, v, val);
tree[id].max_g = max(tree[id << 1].max_g, tree[id << 1 | 1].max_g);
tree[id].min_f = min(tree[id << 1].min_f, tree[id << 1 | 1].min_f);
}
int walk(int id, int l, int r, int val)
{
if (tree[id].max_g < val)
return 0;
if (l == r)
return l;
int m = l + r >> 1;
if (tree[id << 1].max_g >= val)
return walk(id << 1, l, m, val);
return walk(id << 1 | 1, m + 1, r, val);
}
void print_tree(int id, int l, int r)
{
if (l == r)
return cout << tree[id].max_g << ' ', void();
int m = l + r >> 1;
push(id, l, r);
print_tree(id << 1, l, m);
print_tree(id << 1 | 1, m + 1, r);
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("DAYDAYDU.INP", "r"))
{
freopen("DAYDAYDU.INP", "r", stdin);
freopen("DAYDAYDU.OUT", "w", stdout);
}
cin >> n >> q;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
if (a[i] <= n)
pos[a[i]].push_back(i);
}
for (int i = 1; i <= 4 * n; i++)
tree[i].min_f = tree[i].max_g = INF;
for (int x = 1; x <= n; x++)
{
if (pos[x].empty())
break;
pos[x].push_back(n + 1);
// cout << x, el;
for (int i = 1; i < pos[x].size(); i++)
{
int min_pos = walk(1, 1, n, pos[x][i - 1]);
// cout << min_pos << ' ' << pos[x][i] - 1, el;
if (min_pos)
update(1, 1, n, min_pos, pos[x][i] - 1, pos[x][i - 1]);
}
if (pos[x][0] > 1)
update(1, 1, n, 1, pos[x][0] - 1, -INF);
ans[x] = tree[1].min_f;
// print_tree(1, 1, n);
// el;
// el;
}
for (int i = 1; i <= q; i++)
{
int x;
cin >> x;
cout << (x <= n && ans[x] ? ans[x] : -1), el;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBOb2RlCnsKICAgIGludCBtYXhfZywgbWluX2YsIGxhenk7Cn07Cgpjb25zdCBpbnQgbWF4biA9IDJlNTsKY29uc3QgaW50IElORiA9IDFlOTsKCmludCBuLCBxLCBhbnNbbWF4biArIDEwXTsKbGwgYVttYXhuICsgMTBdOwp2ZWN0b3I8aW50PiBwb3NbbWF4biArIDEwXTsKTm9kZSB0cmVlWzQgKiBtYXhuICsgMTBdOwoKdm9pZCBwdXNoKGludCBpZCwgaW50IGwsIGludCByKQp7CiAgICBpZiAoIXRyZWVbaWRdLmxhenkpCiAgICAgICAgcmV0dXJuIDsKICAgIGludCBtID0gbCArIHIgPj4gMTsKICAgIHRyZWVbaWQgPDwgMV0ubGF6eSA9IHRyZWVbaWQgPDwgMSB8IDFdLmxhenkgPSB0cmVlW2lkXS5sYXp5OwogICAgdHJlZVtpZCA8PCAxXS5tYXhfZyA9IHRyZWVbaWQgPDwgMSB8IDFdLm1heF9nID0gdHJlZVtpZF0ubGF6eTsKICAgIHRyZWVbaWQgPDwgMV0ubWluX2YgPSBsIC0gdHJlZVtpZF0ubGF6eSArIDE7CiAgICB0cmVlW2lkIDw8IDEgfCAxXS5taW5fZiA9IG0gLSB0cmVlW2lkXS5sYXp5ICsgMjsKICAgIHRyZWVbaWRdLmxhenkgPSAwOwp9CnZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCB2YWwpCnsKICAgIGlmIChyIDwgdSB8fCBsID4gdikKICAgICAgICByZXR1cm4gOwogICAgaWYgKHUgPD0gbCAmJiByIDw9IHYpCiAgICB7CiAgICAgICAgdHJlZVtpZF0ubWF4X2cgPSB2YWw7CiAgICAgICAgdHJlZVtpZF0ubWluX2YgPSBsIC0gdmFsICsgMTsKICAgICAgICB0cmVlW2lkXS5sYXp5ID0gdmFsOwogICAgICAgIHJldHVybiA7CiAgICB9CiAgICBwdXNoKGlkLCBsLCByKTsKICAgIGludCBtID0gbCArIHIgPj4gMTsKICAgIHVwZGF0ZShpZCA8PCAxLCBsLCBtLCB1LCB2LCB2YWwpOwogICAgdXBkYXRlKGlkIDw8IDEgfCAxLCBtICsgMSwgciwgdSwgdiwgdmFsKTsKICAgIHRyZWVbaWRdLm1heF9nID0gbWF4KHRyZWVbaWQgPDwgMV0ubWF4X2csIHRyZWVbaWQgPDwgMSB8IDFdLm1heF9nKTsKICAgIHRyZWVbaWRdLm1pbl9mID0gbWluKHRyZWVbaWQgPDwgMV0ubWluX2YsIHRyZWVbaWQgPDwgMSB8IDFdLm1pbl9mKTsKfQppbnQgd2FsayhpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHZhbCkKewogICAgaWYgKHRyZWVbaWRdLm1heF9nIDwgdmFsKQogICAgICAgIHJldHVybiAwOwogICAgaWYgKGwgPT0gcikKICAgICAgICByZXR1cm4gbDsKICAgIGludCBtID0gbCArIHIgPj4gMTsKICAgIGlmICh0cmVlW2lkIDw8IDFdLm1heF9nID49IHZhbCkKICAgICAgICByZXR1cm4gd2FsayhpZCA8PCAxLCBsLCBtLCB2YWwpOwogICAgcmV0dXJuIHdhbGsoaWQgPDwgMSB8IDEsIG0gKyAxLCByLCB2YWwpOwp9CnZvaWQgcHJpbnRfdHJlZShpbnQgaWQsIGludCBsLCBpbnQgcikKewogICAgaWYgKGwgPT0gcikKICAgICAgICByZXR1cm4gY291dCA8PCB0cmVlW2lkXS5tYXhfZyA8PCAnICcsIHZvaWQoKTsKICAgIGludCBtID0gbCArIHIgPj4gMTsKICAgIHB1c2goaWQsIGwsIHIpOwogICAgcHJpbnRfdHJlZShpZCA8PCAxLCBsLCBtKTsKICAgIHByaW50X3RyZWUoaWQgPDwgMSB8IDEsIG0gKyAxLCByKTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3BlbigiREFZREFZRFUuSU5QIiwgInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKCJEQVlEQVlEVS5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJEQVlEQVlEVS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBpZiAoYVtpXSA8PSBuKQogICAgICAgICAgICBwb3NbYVtpXV0ucHVzaF9iYWNrKGkpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gNCAqIG47IGkrKykKICAgICAgICB0cmVlW2ldLm1pbl9mID0gdHJlZVtpXS5tYXhfZyA9IElORjsKICAgIGZvciAoaW50IHggPSAxOyB4IDw9IG47IHgrKykKICAgIHsKICAgICAgICBpZiAocG9zW3hdLmVtcHR5KCkpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIHBvc1t4XS5wdXNoX2JhY2sobiArIDEpOwovLyAgICAgICAgY291dCA8PCB4LCBlbDsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHBvc1t4XS5zaXplKCk7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGludCBtaW5fcG9zID0gd2FsaygxLCAxLCBuLCBwb3NbeF1baSAtIDFdKTsKLy8gICAgICAgICAgICBjb3V0IDw8IG1pbl9wb3MgPDwgJyAnIDw8IHBvc1t4XVtpXSAtIDEsIGVsOwogICAgICAgICAgICBpZiAobWluX3BvcykKICAgICAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBtaW5fcG9zLCBwb3NbeF1baV0gLSAxLCBwb3NbeF1baSAtIDFdKTsKICAgICAgICB9CiAgICAgICAgaWYgKHBvc1t4XVswXSA+IDEpCiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCAxLCBwb3NbeF1bMF0gLSAxLCAtSU5GKTsKICAgICAgICBhbnNbeF0gPSB0cmVlWzFdLm1pbl9mOwovLyAgICAgICAgcHJpbnRfdHJlZSgxLCAxLCBuKTsKLy8gICAgICAgIGVsOwovLyAgICAgICAgZWw7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspCiAgICB7CiAgICAgICAgaW50IHg7CiAgICAgICAgY2luID4+IHg7CiAgICAgICAgY291dCA8PCAoeCA8PSBuICYmIGFuc1t4XSA/IGFuc1t4XSA6IC0xKSwgZWw7CiAgICB9Cn0=