#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<string.h>
#include<cmath>
#include<string>
using namespace std;


//
/*************************
题意:
有一个成环(图中仅这个环)的图,按顺序给出各点间的距离
给出查询s到e
求出s到e的最小值
*************************/

/************************
求解要点:
1.由于N>10^5,故不可能用DJktra,而且是简单题
2.根据这个图的特性, 2到5的距离可以表示为
1到5的距离减去1到2的距离

1到5的“反向距离”加上1到2的距离
即最短路只有两种可能,绕1过,或不绕1过,即可得答案
************************/

/***********************
笔记:

*********************/

#define M 100005
#define INF 0xfffff

int d[M];
int d1[M],d2[M]; //d1是顺时针,d2是逆时针
int main()
{
int n,i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&d[i]);
sum+=d[i];
}

d1[1]=0;
d2[1]=0;

for(i=2;i<=n;i++)
{
d1[i] = d1[i-1] + d[i-1];
d2[i] = sum - d1[i];
//printf("d1[%d]=%d,d2[%d]=%d\n",i,d1[i],i,d2[i]);
}
int k,s,e,dd1,dd2;
scanf("%d",&k);
int t;
for(i=0;i<k;i++)
{
scanf("%d%d",&s,&e);
if(s>e)
{
t=s;
s=e;
e=t;
}
dd1=d1[e]-d1[s];
dd2=d1[s]+d2[e];
if(dd1 < dd2)
cout<<dd1<<endl;
else cout<<dd2<<endl;
}

return 0;
}