#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdio>
using namespace std;
#define ll long long
#define sc scanf
#define pf printf
#define N 500005
int a[N],sum[N],ed[N],cnt[N],blk[N],ans[N];
int n,m,bunm;
struct qu{
int l,r,id;
bool operator <(const qu y) const {
return blk[l]!=blk[y.l]?blk[l]<blk[y.l]:(blk[l]&1?r<y.r:r>y.r);
}
}q[N];
int Q(){
for(int i=bunm;i;i--){
if(!sum[i])continue;
for(int j=ed[i];blk[j]==i;j--){
if(cnt[j]==1)return j;
}
}
return 0;
}
void add(int x){
if(cnt[x]==1)sum[blk[x]]--;
if(cnt[x]==0)sum[blk[x]]++;
cnt[x]++;
}
void del(int x){
if(cnt[x]==1)sum[blk[x]]--;
if(cnt[x]==2)sum[blk[x]]++;
cnt[x]--;
}
int main(){
sc("%d",&n);
int size=sqrt(n);
bunm=ceil((double)n/size);
for(int i=1;i<=n;i++){
sc("%d",&a[i]);
}
for(int i = 1; i <= bunm; ++i)
for(int j = (i - 1) * size + 1; j <= i * size; ++j) {
blk[j] = i;
ed[i]=j;
}
cin>>m;
for(int i=1;i<=m;i++){
sc("%d%d",&q[i].l,&q[i].r);
q[i].id=i;
}
sort(q+1,q+m+1);
int nowl=1,nowr=0;
for(int i=1;i<=m;i++){
while(nowl<q[i].l)del(a[nowl++]);
while(nowl>q[i].l)add(a[--nowl]);
while(nowr<q[i].r)add(a[++nowr]);
while(nowr>q[i].r)del(a[nowr--]);
ans[q[i].id]=Q();
}
for(int i=1;i<=m;i++){
pf("%d\n",ans[i]);
}
return 0;
}