#include #include #include #include using namespace std; #define MAX 1000010 int q[MAX]; int end[MAX]; int begin[MAX]; int output[MAX]; inline bool cmp( int a, int b ) { return end[a] < end[b]; } int A[MAX]; int last[MAX]; int cookie[MAX]; int tajm; int N, Q; int main(void) { for (;;) { ++tajm; scanf("%d%d", &N, &Q); if ( N == 0 && Q == 0 ) break; for ( int i = 1; i <= N; ++i ) scanf("%d", A + i); for ( int i = 0; i < Q; ++i ) { scanf("%d%d", begin + i, end + i); q[i] = i; } sort( q, q + Q, cmp ); memset( output, -1, sizeof( output[0] ) * Q ); int right = -1, right_value = -1; int k = 0; for ( int i = 1; i <= N; ++i ) { int v = A[i]; if ( cookie[v] != tajm ) { last[v] = i; cookie[v] = tajm; } else { if ( last[v] > right ) { right = last[v]; right_value = v; } last[v] = i; } while ( k < Q && end[q[k]] <= i ) { // printf("k=%d q[k]=%d end=%d right=%d %d\n", k, q[k], end[q[k]], right, right_value); if ( right >= begin[q[k]] ) output[ q[k] ] = right_value; ++k; } } for ( int i = 0; i < Q; ++i ) if ( output[i] != -1 ) printf("%d\n", output[i]); else printf("OK\n"); printf("\n"); } return 0; }