#define debug if(0) #include #include #include #include using namespace std; #define REP(i,n) for(int i = 0; i < int(n); i++) #define FOR(i,b,e) for(int i = int(b); i <= int(e); i++) struct query{ int b,e,id; bool operator<(const query& rhs) const { return e < rhs.e; } }; const int maxn = 1000100; int n,m; query q[maxn]; int t[maxn]; int res[maxn]; map s; int main() { while(true) { scanf("%d%d", &n, &m); if(n == 0 && m == 0) break; s.clear(); FOR(i,1,n) scanf("%d", t + i); REP(i,m) { scanf("%d %d", &q[i].b, &q[i].e); q[i].id = i; } sort(q, q + m); int f = 0; int j = 0; int ex = -2; FOR(i,1,n) { if(s.find(t[i]) != s.end()) { int nf = s[t[i]] + 1; if(nf > f) { f = nf; ex = t[i]; } } s[t[i]] = i; debug printf("i %d f %d\n", i, f); while(j < m && q[j].e == i) { debug printf("proc id %d\n", q[j].id); if(q[j].b < f) res[q[j].id] = ex; else res[q[j].id] = -1; j++; } } REP(i,m) if(res[i] == -1) printf("OK\n"); else printf("%d\n", res[i]); printf("\n"); } return 0; }