#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7;
int n,m;
int a[N];
struct Node
{
int l,r,id;
}q[N];
int col[N];
int base;
int ans[N];
int cnt[N];
int a2[N];
int g[N],top;
int bz[N];
inline bool cmp(Node A,Node B)
{
return A.l/base==B.l/base?A.r/base<B.r/base:A.l<B.l;
}
int main()
{
scanf("%d",&n);
base=pow(n,0.666);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&q[i].l,&q[i].r);
q[i].id=i;
}
sort(q+1,q+1+m,cmp);
int now=0;
int l=1,r=0;
for(int i=1;i<=m;i++)
{
int ql=q[i].l;
int qr=q[i].r;
while(l<ql)
{
if(cnt[a[l]]==1)
{
bz[a[l]]=0;
}
cnt[a[l]]--;
if(cnt[a[l]]==1)
{
bz[a[l]]=a[l];
g[++top]=a[l];
}
l++;
}
while(l>ql)
{
l--;
if(cnt[a[l]]==1)
{
bz[a[l]]=0;
}
cnt[a[l]]++;
if(cnt[a[l]]==1)
{
bz[a[l]]=a[l];
g[++top]=a[l];
}
}
while(r<qr)
{
r++;
if(cnt[a[r]]==1)
{
bz[a[r]]=0;
}
cnt[a[r]]++;
if(cnt[a[r]]==1)
{
bz[a[r]]=a[r];
g[++top]=a[r];
}
}
while(r>qr)
{
if(cnt[a[r]]==1)
{
bz[a[r]]=0;
}
cnt[a[r]]--;
if(cnt[a[r]]==1)
{
bz[a[r]]=a[r];
g[++top]=a[r];
}
r--;
}
while(bz[g[top]]==0&&top>=1) top--;
ans[q[i].id]=bz[g[top]];
}
for(int i=1;i<=m;i++)
{
printf("%d\n",ans[i]);
}
}