#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for(int i=(a); i<(b); ++i) #define REP(i,n) for(int i=1; i<=(n); ++i) #define pb push_back #define INF 1000000001 #define EPS 10e-9 #define P 1000000007 typedef vector vi; typedef pair pii; #define st first #define nd second typedef long long ll; typedef unsigned long long ull; #define ISDEBUG 1 #define dprintf if(ISDEBUG) printf void PTAB(const vi& t) {FOR(i,0,t.size()) printf("%d ", t[i]); puts("");} #define DPTAB if(ISDEBUG) PTAB vi d; int g(int i) { return ((i^(i-1)) +1) /2; } int query(int i) { if(i==0) return 0; int result = 0; while(i>0) { result = max(result, d[i]); i -= g(i); } return result; } int update(int i, int x) { while(i last; vi res(m+1, 0); d.clear(); int M=1; while(M<=m) M<<=1; d.resize(M, 0); REP(i,m) { int x; scanf("%d", &x); if(last.count(x)) update(i, last[x]); if(query(i)>query(i-1)) res[i]=x; else res[i] = res[i-1]; last[x] = i; } REP(i,q) { int a,b; scanf("%d%d", &a, &b); if(query(b) >= a) printf("%d\n", res[b]); else puts("OK"); } puts(""); } return 0; }