
#include<bits/stdc++.h>
using namespace std;
#define N 4*1001000
int n,m,k;
struct shu
{
int l,r,num;
}tree[N];
int a[N];
int s;
void build(int i,int l,int r)
{
tree[i].l=l;
tree[i].r=r;
if(l==r)
return ;
int mid=(l+r)/2;
build(i*2,l,mid);
build(i*2+1,mid+1,r);
}
int add(int i)
{
if(tree[i].l==tree[i].r)
{
tree[i].num=a[tree[i].r];
return tree[i].num;
}
tree[i].num=add(i*2)+add(i*2+1);
return tree[i].num;
}
void quxiu(int i,int l,int r,int k)
{
if(l<=tree[i].l&&tree[i].r<=r)
{
tree[i].num+=k;
return ;
}
if(l<=tree[i*2].r)
quxiu(i*2,l,r,k);
if(tree[i*2+1].l<=r)
quxiu(i*2+1,l,r,k);
}
void cha(int i,int l,int r)
{
if(l<=tree[i].l&&tree[i].r<=r)
{
s=s+tree[i].num;
return ;
}
if(l<=tree[i*2].r)
cha(i*2,l,r);
if(tree[i*2+1].l<=r)
cha(i*2+1,l,r);
}
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
build(1,1,n);
add(1);
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
quxiu(1,x,y,z);
}
for(int i=1;i<=k;i++)
{
int x,y;
cin>>x>>y;
s=0;
cha(1,x,y);
cout<<s<<endl;
}
}