// J
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define bint __int128
#define _3bkarm cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false);
const int oo = 1e9;
struct edge{
int u, v, cap, flow;
};
struct Dinic{
int n;
vector<int> dist, par, idEdge, curId;
vector<vector<int>> adj;
vector<edge> edges;
Dinic(int nn){
n = nn;
dist.resize(n + 1);
adj.resize(n + 1);
par.resize(n + 1);
idEdge.resize(n + 1);
curId.resize(n + 1);
}
void addEdge(int u, int v, int c){
adj[u].push_back(edges.size());
edges.push_back({u, v, c, 0});
adj[v].push_back(edges.size());
edges.push_back({v, u, c, 0});
}
int flow(int src, int sink) {
int totalFlow = 0;
while(isPath(src, sink)){
for(int i = 1; i <= n; i++)
curId[i] = 0;
while(int newFlow = dfs(src, oo, sink))
totalFlow += newFlow;
}
return totalFlow;
}
bool isPath(int src, int sink){
for(int i = 1; i <= n; i++)
dist[i] = oo;
queue<int> q;
q.push(src);
dist[src] = 0;
while(!q.empty()){
int u = q.front();
q.pop();
if(u == sink)
break;
for(auto idx : adj[u]){
auto [_,v,c, f] = edges[idx];
if(f < c && dist[v] == oo){
dist[v] = dist[u] + 1;
par[v] = u;
idEdge[v] = idx;
q.push(v);
}
}
}
return dist[sink] < oo;
}
int dfs(int u, int flow, int sink){
if(!flow)
return 0;
if(u == sink)
return flow;
for(;curId[u] < adj[u].size(); curId[u]++){
int idx = adj[u][curId[u]];
auto [_, v, c, f] = edges[idx];
if(dist[v] != dist[u] + 1)
continue;
int newFlow = dfs(v, min(flow, c - f), sink);
if(newFlow){
edges[idx].flow += newFlow;
edges[idx ^ 1].flow -= newFlow;
return newFlow;
}
}
return 0;
}
};
int n, m, k, c;
int id(int i, int j){
return (i - 1) * (m + 1) + j;
}
void getShitDone() {
cin >> n >> m>> k >> c;
Dinic dinic(n * (m + 1) + 6);
int src = n * (m + 1) + 4, sink = n * (m + 1) + 5, shift = 1e6;
int p[n + 1][ m + 1];
for(int i = 1; i <= n; i++){
dinic.addEdge(src, id(i, 1), oo);
for(int j = 1; j <= m; j++){
cin >> p[i][j];
dinic.addEdge(id(i, j), id(i, j + 1), shift - p[i][j]);
// dinic.addEdge(id(i, j + 1), id(i, j), shift - p[i][j]);
}
dinic.addEdge(id(i, m + 1), sink, oo);
}
for(int i = 0; i < k; i++){
int a, b; cin >> a >> b;
for(int j = 2; j <= m; j++) {
dinic.addEdge(id(a, j), id(b, j), c);
// dinic.addEdge(id(b, j), id(a, j), c);
}
}
cout << n * shift - dinic.flow(src, sink);
}
signed main() {
_3bkarm
int ts = 1;
// cin >> ts;
while (ts--) getShitDone();
return 0;
}
Ly8gSgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGJpbnQgX19pbnQxMjgKI2RlZmluZSBfM2JrYXJtIGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOyBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7Cgpjb25zdCBpbnQgb28gPSAxZTk7CgpzdHJ1Y3QgZWRnZXsKICAgIGludCB1LCB2LCBjYXAsIGZsb3c7Cn07CgpzdHJ1Y3QgRGluaWN7CiAgICBpbnQgbjsKICAgIHZlY3RvcjxpbnQ+IGRpc3QsIHBhciwgaWRFZGdlLCBjdXJJZDsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqOwogICAgdmVjdG9yPGVkZ2U+IGVkZ2VzOwoKICAgIERpbmljKGludCBubil7CiAgICAgICAgbiA9IG5uOwogICAgICAgIGRpc3QucmVzaXplKG4gKyAxKTsKICAgICAgICBhZGoucmVzaXplKG4gKyAxKTsKICAgICAgICBwYXIucmVzaXplKG4gKyAxKTsKICAgICAgICBpZEVkZ2UucmVzaXplKG4gKyAxKTsKICAgICAgICBjdXJJZC5yZXNpemUobiArIDEpOwogICAgfQoKICAgIHZvaWQgYWRkRWRnZShpbnQgdSwgaW50IHYsIGludCBjKXsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKGVkZ2VzLnNpemUoKSk7CiAgICAgICAgZWRnZXMucHVzaF9iYWNrKHt1LCB2LCBjLCAwfSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayhlZGdlcy5zaXplKCkpOwogICAgICAgIGVkZ2VzLnB1c2hfYmFjayh7diwgdSwgYywgMH0pOwogICAgfQoKICAgIGludCBmbG93KGludCBzcmMsIGludCBzaW5rKSB7CiAgICAgICAgaW50IHRvdGFsRmxvdyA9IDA7CiAgICAgICAgd2hpbGUoaXNQYXRoKHNyYywgc2luaykpewogICAgICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgICAgIGN1cklkW2ldID0gMDsKICAgICAgICAgICAgd2hpbGUoaW50IG5ld0Zsb3cgPSBkZnMoc3JjLCBvbywgc2luaykpCiAgICAgICAgICAgICAgICB0b3RhbEZsb3cgKz0gbmV3RmxvdzsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0b3RhbEZsb3c7CiAgICB9CgogICAgYm9vbCBpc1BhdGgoaW50IHNyYywgaW50IHNpbmspewogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgICAgICBkaXN0W2ldID0gb287CgogICAgICAgIHF1ZXVlPGludD4gcTsKICAgICAgICBxLnB1c2goc3JjKTsKICAgICAgICBkaXN0W3NyY10gPSAwOwoKICAgICAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICAgICAgaW50IHUgPSBxLmZyb250KCk7CiAgICAgICAgICAgIHEucG9wKCk7CiAgICAgICAgICAgIGlmKHUgPT0gc2luaykKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZm9yKGF1dG8gaWR4IDogYWRqW3VdKXsKICAgICAgICAgICAgICAgIGF1dG8gW18sdixjLCBmXSA9IGVkZ2VzW2lkeF07CiAgICAgICAgICAgICAgICBpZihmIDwgYyAmJiBkaXN0W3ZdID09IG9vKXsKICAgICAgICAgICAgICAgICAgICBkaXN0W3ZdID0gZGlzdFt1XSArIDE7CiAgICAgICAgICAgICAgICAgICAgcGFyW3ZdID0gdTsKICAgICAgICAgICAgICAgICAgICBpZEVkZ2Vbdl0gPSBpZHg7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBkaXN0W3NpbmtdIDwgb287CiAgICB9CgogICAgaW50IGRmcyhpbnQgdSwgaW50IGZsb3csIGludCBzaW5rKXsKICAgICAgICBpZighZmxvdykKICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIGlmKHUgPT0gc2luaykKICAgICAgICAgICAgcmV0dXJuIGZsb3c7CgogICAgICAgIGZvcig7Y3VySWRbdV0gPCBhZGpbdV0uc2l6ZSgpOyBjdXJJZFt1XSsrKXsKICAgICAgICAgICAgaW50IGlkeCA9IGFkalt1XVtjdXJJZFt1XV07CiAgICAgICAgICAgIGF1dG8gW18sIHYsIGMsIGZdID0gZWRnZXNbaWR4XTsKCiAgICAgICAgICAgIGlmKGRpc3Rbdl0gIT0gZGlzdFt1XSArIDEpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIGludCBuZXdGbG93ID0gZGZzKHYsIG1pbihmbG93LCBjIC0gZiksIHNpbmspOwogICAgICAgICAgICBpZihuZXdGbG93KXsKICAgICAgICAgICAgICAgIGVkZ2VzW2lkeF0uZmxvdyArPSBuZXdGbG93OwogICAgICAgICAgICAgICAgZWRnZXNbaWR4IF4gMV0uZmxvdyAtPSBuZXdGbG93OwogICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Zsb3c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cgp9OwoKaW50IG4sIG0sIGssIGM7CgppbnQgaWQoaW50IGksIGludCBqKXsKICAgIHJldHVybiAoaSAtIDEpICogKG0gKyAxKSArIGo7Cn0KCnZvaWQgZ2V0U2hpdERvbmUoKSB7CiAgICBjaW4gPj4gbiA+PiBtPj4gayA+PiBjOwoKICAgIERpbmljIGRpbmljKG4gKiAobSArIDEpICsgNik7CiAgICBpbnQgc3JjID0gbiAqIChtICsgMSkgKyA0LCBzaW5rID0gbiAqIChtICsgMSkgKyA1LCBzaGlmdCA9IDFlNjsKICAgIGludCBwW24gKyAxXVsgbSArIDFdOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGRpbmljLmFkZEVkZ2Uoc3JjLCBpZChpLCAxKSwgb28pOwogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbTsgaisrKXsKICAgICAgICAgICAgY2luID4+IHBbaV1bal07CiAgICAgICAgICAgIGRpbmljLmFkZEVkZ2UoaWQoaSwgaiksIGlkKGksIGogKyAxKSwgc2hpZnQgLSBwW2ldW2pdKTsKLy8gICAgICAgICAgICBkaW5pYy5hZGRFZGdlKGlkKGksIGogKyAxKSwgaWQoaSwgaiksIHNoaWZ0IC0gcFtpXVtqXSk7CiAgICAgICAgfQogICAgICAgIGRpbmljLmFkZEVkZ2UoaWQoaSwgbSArIDEpLCBzaW5rLCBvbyk7CiAgICB9CgogICAgZm9yKGludCBpID0gMDsgaSA8IGs7IGkrKyl7CiAgICAgICAgaW50IGEsIGI7IGNpbiA+PiBhID4+IGI7CiAgICAgICAgZm9yKGludCBqID0gMjsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgZGluaWMuYWRkRWRnZShpZChhLCBqKSwgaWQoYiwgaiksIGMpOwovLyAgICAgICAgICAgIGRpbmljLmFkZEVkZ2UoaWQoYiwgaiksIGlkKGEsIGopLCBjKTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBuICogc2hpZnQgLSBkaW5pYy5mbG93KHNyYywgc2luayk7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgXzNia2FybQoKICAgIGludCB0cyA9IDE7Ci8vICAgIGNpbiA+PiB0czsKICAgIHdoaWxlICh0cy0tKSBnZXRTaGl0RG9uZSgpOwoKICAgIHJldHVybiAwOwp9