#include #define N (1<<18) using namespace std; int v[N]; int comp[N]; vector mp[N]; map enc; map de; int main() { cin.sync_with_stdio(false); cin.tie(0); srand(time(0)); int n, q; cin>>n>>q; vector vals; for (int i = 1; i <= n; i++) { cin>>v[i]; vals.push_back(v[i]); } vals.push_back(-1); sort(vals.begin(), vals.end()); int cnt = 0; for (int i = 1; i <= n; i++) { if (vals[i] != vals[i - 1]) cnt++; enc[vals[i]] = cnt; de[cnt] = vals[i]; } for (int i = 1; i <= n; i++) { comp[i] = enc[v[i]]; mp[comp[i]].push_back(i); } for (int i = 1; i <= n; i++) { if (mp[comp[i]].back() != n + 1) mp[comp[i]].push_back(n + 1); } while (q --> 0) { int l, r; cin>>l>>r; for (int t = 0; t < 10; t++) { int len = r - l + 1; int i = l + (rand() % len); int li = -1; int ri = -1; int wl = mp[comp[i]].size(); for (int inc = 1<<17; inc >= 1; inc /= 2) { if (li + inc < wl && mp[comp[i]][li + inc] < l) li += inc; if (ri + inc < wl && mp[comp[i]][ri + inc] <= r) ri += inc; } if (2 * (ri - li) > len) { cout<