#include #include #include using namespace std; int m, q; int klu[1000000], ost[1000000], pre[1000000], sor[1000000], odp[1000000], roz, mx, ret; vector > pyt[1000000]; int main() { while (1) { scanf("%d%d", &m, &q); mx = -1; if (!m && !q) return 0; for (int i = 0; i < m; ++i) { scanf("%d", klu + i); sor[i] = klu[i]; } sort(sor, sor + m); roz = unique(sor, sor + m) - sor; fill(ost, ost + roz, -1); for (int i = 0; i < roz; ++i) pre[i] = sor[i]; for (int i = 0; i < q; ++i) { int odk, dok; scanf("%d%d", &odk, &dok); pyt[dok - 1].push_back(make_pair(odk - 1, i)); } for (int i = 0; i < m; ++i) { int ak = lower_bound(sor, sor + roz, klu[i]) - sor; if (mx < ost[ak]) { mx = ost[ak]; ret = ak; } ost[ak] = i; for (vector >::iterator it = pyt[i].begin(); it != pyt[i].end(); ++it) if (it->first <= mx) odp[it->second] = ret; else odp[it->second] = -1; } for (int i = 0; i < q; ++i) if (odp[i] == -1) printf("OK\n"); else printf("%d\n", pre[odp[i]]); printf("\n"); for (int i = 0; i < m; ++i) pyt[i].clear(); } }