#include #define rep(i, a, b) for(int i = (a); i <= (b); i ++) using std::cin, std::cout, std::cerr; using ll = long long; void Solve() { int n, m; ll c; cin >> n >> m >> c; std::vector>> e(n + 1); ll sum = 0; rep(i, 1, n) { ll x; cin >> x; sum += x; e[i - 1].push_back({i, x}); e[i].push_back({i - 1, x}); } rep(i, 1, m) { int l, r; cin >> l >> r; e[l - 1].push_back({r, c}); e[r].push_back({l - 1, c}); } std::vector f(n + 1, 1e18L); f[0] = 0; std::set> set; rep(i, 0, n) set.insert({f[i], i}); while(!set.empty()) { auto [_, x] = *set.begin(); set.erase(set.begin()); for(auto [i, w] : e[x]) { if(f[x] + w < f[i]) { set.erase({f[i], i}); f[i] = f[x] + w; set.insert({f[i], i}); } } } cout << sum - f[n] << '\n'; } int main() { std::ios::sync_with_stdio(false); int T = 1; while(T --) { Solve(); } }