#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int MAXN = 1000005;
int st[MAXN][21];
int n, m, type;
ull cnt = 0;
int Log[MAXN];
namespace gen{
typedef unsigned long long ull;
ull s,a,b,c,lastans=0;
ull rand(){
return s^=(a+b*lastans)%c;
}
};
// 预处理 log2 数组
void resetLog() {
Log[1] = 0;
for(int i = 2; i <= n; i++) {
Log[i] = Log[i / 2] + 1;
}
}
//预处理st表
void reset() {
for(int k = 1; k <= 20; k++) {
for(int i = 0; i+(1<<k)-1 <= n; i ++) {
st[i][k] = min(st[i][k-1], st[i+(1<<(k-1))][k-1]);
}
}
}
int main()
{
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m >> type;
for(int i = 0; i <= n; i ++) {
cin >> st[i][0];
}
resetLog();
reset();
if(type == 0) {
for(int i = 1; i < m; i ++) {
int l, r, minx;
cin >> l >> r;
//查询区间长度
int len = r - l + 1;
int k = Log[len];
minx = min(st[l][k], st[r-(1<<k)+1][k]);
cnt += minx;
}
cout << cnt;
} else if(type == 0) {
int l, r;
l=gen::rand()%n+1;
r=gen::rand()%n+1;
if(l>r) std::swap(l,r);
for(int i = 1; i < m; i ++) {
int l, r, minx;
cin >> l >> r;
//查询区间长度
int len = r - l + 1;
int k = Log[len];
minx = min(st[l][k], st[r-(1<<k)+1][k]);
cnt += minx;
}
cout << cnt;
}
fclose(stdin);
fclose(stdout);
return 0;
}