#include #include using namespace std; int main() { long long N, M, C, a, l, r, ret = 0; cin >> N >> M >> C; atcoder::mcf_graph mcf(N + 1); for (int i = 0; i < N; ++i) cin >> a, mcf.add_edge(i, i + 1, 1, a), mcf.add_edge(i + 1, i, 1, a), ret += a; while (M--) cin >> l >> r, --l, mcf.add_edge(l, r, 1, C), mcf.add_edge(r, l, 1, C); cout << ret - mcf.flow(0, N, 1).second << endl; }