#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 525020,M = 3 * N;
int n,m;
ll a[N*2],sum[N*2];
ll e[M],h[N],ne[M];
ll w[M],idx;
ll d[50][N];
bool str[N];
set<ll> S;
void add(int a,int b,ll c)
{
e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++;
}
ll cal(int x,int y){
return y >= x ? sum[y-1] - sum[x-1] : sum[n+y-1] - sum[x-1];
}
void spfa(int id,int x)
{
for(int i=1;i<=n;i++) d[id][i]=1e17;
memset(str,0,sizeof str);
queue<int>q;
d[id][x]=0;
q.push(x);
str[x]=true;
while(q.size())
{
auto t=q.front();
q.pop();
str[t]=false;
for(int i=h[t];i!=-1;i=ne[i])
{
int j=e[i];
if(d[id][j]>d[id][t]+w[i])
{
d[id][j]=d[id][t]+w[i];
if(!str[j])
{
q.push(j);
str[j]=true;
}
}
}
}
}
int main()
{
cin>>n>>m;
memset(h,-1,sizeof h);
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=n+1;i<=2*n;i++) a[i]=a[i-n];
for(int i=1;i<=2*n;i++) sum[i]=sum[i-1]+a[i];
for(int i=1;i<n;i++) add(i,i+1,a[i]),add(i+1,i,a[i]);
add(1,n,a[n]),add(n,1,a[n]);
while(m--)
{
int a,b;
ll c;
cin>>a>>b>>c;
S.insert(a);
S.insert(b);
add(a,b,c),add(b,a,c);
}
int num=0;
for(auto p:S) spfa(num++,p);
int Q;
cin>>Q;
while(Q--)
{
int x,y;
cin>>x>>y;
ll ans=min(cal(x,y),cal(y,x));
num=0;
for(auto p:S)
{
ans=min(ans,d[num][x]+d[num][y]);
num++;
}
cout<<ans<<'\n';
}
return 0;
}