#include<iostream>
#include<algorithm>
#include<cstdio>
#include<map>
#define REP(i, n) for(int i = 0; i < (n); i++)
#define PI pair<int, int>
#define ST first
#define ND second
#define INF 2000000000
using namespace std;
PI t[2200000];
int base = 1 << 20;
void create(){
  for(int i = (1<<20)-1; i >=1; i--){
    if( t[i*2].ST < t[i*2+1].ST)
      t[i] = t[i*2];
    else t[i] = t[i*2+1];
  }
  return;
}
PI best;
void add(int x){
  if(t[x].ST < best.ST) best = t[x];
}
PI query(int a, int b){
  best = PI(INF, INF);
  add(a);
  if( a != b) add(b);
  while(a/2 != b/2){
    if( a%2 == 0) add(a+1);
    if( b%2 == 1) add( b-1);
    a/=2; b/=2;
  }
  return best;
}
int main(){
  int n, q, x;
  while(1){
    scanf("%d %d", &n, &q);
    REP(i, 1<<21) t[i] = PI(INF, INF);
    if( n == 0 && q == 0) return 0;
    map<int, int> m;
    REP(i, n){
      scanf("%d", &x);
      if( m.find(x) != m.end()) t[m[x] + base] = PI(i, x);
      m[x] = i;
    }
    create();
    int A, B;
    REP(i, q){
      scanf("%d %d", &A, &B);
      A--;B--;
      PI act = query(A+base, B+base);
      if( act.ST <= B)printf("%d\n", act.ND);
      else printf("OK\n");
    }
    printf("\n");
  }
return 0;
}
