#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:134217728")
using namespace std;
int n, m, k, p;
int a[1 << 10][1 << 10];
long long add1[1 << 20];
long long add2[1 << 20];
int main() {
  scanf("%d%d%d%d", &n, &m, &k, &p);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) scanf("%d", &a[i][j]);
  priority_queue<long long> A, B;
  for (int i = 0; i < n; ++i) {
    int s = 0;
    for (int j = 0; j < m; ++j) s += a[i][j];
    A.push(s);
  }
  for (int i = 0; i < m; ++i) {
    int s = 0;
    for (int j = 0; j < n; ++j) s += a[j][i];
    B.push(s);
  }
  add1[0] = 0;
  for (int i = 1; i <= k; ++i) {
    add1[i] = A.top() + add1[i - 1];
    long long top = A.top();
    A.pop();
    top -= p * m;
    A.push(top);
  }
  add2[0] = 0;
  for (int i = 1; i <= k; ++i) {
    add2[i] = B.top() + add2[i - 1];
    long long top = B.top();
    B.pop();
    top -= p * n;
    B.push(top);
  }
  long long res = add1[k];
  for (int i = 0; i <= k; ++i) {
    long long cur = add1[i] + add2[k - i];
    cur -= (long long)i * (k - i) * p;
    res = max(res, cur);
  }
  printf("%I64d\n", res);
  return 0;
}
