#include #include #include #include using namespace std; int main() { int m, q, b, e, M[1000001]; bool first = true; while (true) { scanf("%d %d", &m, &q); if (m == 0 && q == 0) break; if (!first) puts(""); else first = false; map > keys; for (int i = 1; i <= m; i++) { scanf("%d", M + i); keys[M[i]].push_back(i); } #if 0 for (map >::iterator i = keys.begin(); i != keys.end(); i++) { printf("%d: ", i->first); for (vector::iterator j = i->second.begin(); j != i->second.end(); j++) { printf("%d ", *j); } puts(""); } #endif for (int i = 0; i < q; i++) { scanf("%d %d", &b, &e); vector::iterator itb, ite; int bad = -1; for (int i = b; i <= e; i++) { vector c = keys[M[i]]; itb = lower_bound(c.begin(), c.end(), b); ite = upper_bound(c.begin(), c.end(), e); int count = int(ite - itb); if (count > 1) { bad = M[i]; break; } } if (bad == -1) puts("OK"); else printf("%d\n", bad); } } return 0; }