#include <bits/stdc++.h>
using namespace std;
int n, m, k, mx, a[100][100], dp[100][100], me[100], inf = -1e15;
int sub(int a, int b) { return (((a - b) % k) + k); }
signed main(void) {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) cin >> a[i][j];
  memset(dp, -1, sizeof dp);
  dp[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      for (int u = min(m / 2, j); u >= 1; u--) {
        for (int t = 0; t < k; t++) {
          int x = sub(t, a[i][j]) % k;
          if (dp[u - 1][x] != -1)
            dp[u][t] = max(dp[u][t], dp[u - 1][x] + a[i][j]);
        }
      }
    }
    for (int u = 1; u <= m / 2; u++) {
      for (int t = 0; t < k; t++) {
        dp[0][t] = max(dp[0][t], dp[u][t]);
        if (n != i) dp[u][t] = -1;
      }
    }
  }
  int mx = 0;
  for (int i = 0; i <= m / 2; i++) mx = max(mx, dp[i][0]);
  cout << mx << '\n';
}
