// // File: unique.cc // Author: cteam21 // // Created on November 13, 2011, 9:20 AM // #include <stdlib.h> #include <stdio.h> #include <string.h> // // // int main(int argc, char** argv) { char bits[134217800]; //int bits[1250]; int pole[1000000]; //int pole[1000]; int interval[1000000][2]; //int interval[1000][2]; int n, q, start; int low, high; int count; while (42){ scanf("%d%d", &n, &q); if(n==0) return 0; count=0; start=0; memset(bits, 0, 134217800); //memset(bits, 0, 1250); for(int i=0;i<n;i++){ int temp; scanf("%d", &temp); if(bits[temp/8]&(1<<(temp%8))){ //printf("testy"); for (int j=start; j<i; j++){ //printf("."); if (temp==pole[j]){ interval[count][0]=start; interval[count][1]=i-1; start=j+1; count++; break; } else bits[pole[j]/8]&=(255-(1<<(pole[j]%8))); } } else { bits[temp/8]+=(1<<(temp%8)); } pole[i]=temp; // for (int k=0; k<10; k++){ // printf("%d ", bits[k/8]&(1<<(k%8))); // } // printf("\n"); } interval[count][0]=start; interval[count][1]=n-1; count++; // for (int i=0; i<n; i++){ // printf("%d ", pole[i]); // // } // printf("\n"); // for (int i=0; i<count; i++){ // printf("%d - %d\n", interval[i][0], interval[i][1]); // } for (int i=0; i<q; i++){ scanf ("%d%d", &low, &high); low--; high--; int j; for (j=0; j<count; j++){ if (interval[j][0]>low){ if (high<=interval[j-1][1]){ printf("OK\n"); break; } else{ printf("%d\n", pole[interval[j-1][1]+1]); break; } } } if (j==count) printf("OK\n"); } printf("\n"); } return 0; }