#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define fo(i,a,b) for(i=a;i<=b;i++)
typedef long long ll;
using namespace std;
const int maxn=50007;
int i,j,k,l,t,n,m,ans[maxn],ans1,r,a[maxn],kuai,h[maxn];
struct node{
int a,b,c,d,e;
}b[maxn];
bool cmp(node x,node y){
return x.d<y.d||x.d==y.d&&x.e<y.e;
}
int lowbit(int x){
return (-x)&x;
}
void add(int x,int z){
int i,j,k;
while(x<=n){
h[x]+=z;
x+=lowbit(x);
}
}
int find(int x){
int i,j,k=0;
while(x>0){
k+=h[x];
x-=lowbit(x);
}
return k;
}
int main(){
freopen("file.in","r",stdin);
freopen("file.out","w",stdout);
scanf("%d",&n);kuai=sqrt(n);
fo(i,1,n)scanf("%d",&a[i]);
scanf("%d",&m);
fo(i,1,m){
scanf("%d%d",&b[i].a,&b[i].b);
b[i].c=i;b[i].d=b[i].a/kuai+1;b[i].e=b[i].b/kuai+1;
}
sort(b+1,b+1+m,cmp);
l=1,r=0;
fo(i,1,m){
while(l<b[i].a)add(a[l],-1),ans1-=find(a[l]-1),l++;
while(l>b[i].a)l--,add(a[l],1),ans1+=find(a[l]-1);
while(r<b[i].b)r++,add(a[r],1),ans1+=r-l+1-find(a[r]);
while(r>b[i].b)add(a[r],-1),ans1-=r-l-find(a[r]),r--;
ans[b[i].c]=ans1;
}
fo(i,1,m)printf("%d\n",ans[i]);
}