for (ll i = 1; i <= n; ++i) for (ll j = 1; j <= m; ++j) cin >> a[i][j];
for (ll i = 0; i < 75; ++i) for (ll j = 0; j < 75; ++j) for (ll x = 0; x < 75; ++x) for (ll y = 0; y < 75; ++y) dp[i][j][x][y] = -1e12;
dp[1][0][0][0] = 0;
for (ll x = 1; x <= n; ++x) { for (ll y = 1; y <= m; ++y) for (ll cnt = 0; cnt <= m / 2; ++cnt) for (ll rem = 0; rem < k; ++rem) { dp[x][y][cnt][rem] = max(dp[x][y][cnt][rem], dp[x][y - 1][cnt][rem]);
if (cnt + 1 <= m / 2) { ll t = (rem + a[x][y]) % k; dp[x][y][cnt + 1][t] = max(dp[x][y][cnt + 1][t], dp[x][y - 1][cnt][rem] + a[x][y]); } } if (x < n) { for (ll cnt = 0; cnt <= m / 2; ++cnt) for (ll rem = 0; rem < k; ++rem) dp[x + 1][0][0][rem] = max(dp[x + 1][0][0][rem], dp[x][m][cnt][rem]); } }
ll ans = 0; for (ll i = 0; i <= m / 2; ++i) ans = max(ans, dp[n][m][i][0]);