#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL INF = 1e18;
int a[205][205];
LL dp[205][205];
LL minn[205];
int main() {
freopen("D.in","r",stdin);
freopen("D.out","w",stdout);
int t;
cin >> t;
while (t--) {
int n, m, k;
cin >> n >> m >> k;
for (int i = 0; i < n; ++i){
for (int j = 0; j < m; ++j){
cin >> a[i][j];
}
}
for (int j = 0; j < m; ++j){
for (int s = 0; s < m; ++s){
dp[j][s] = INF;
}
}
for (int s = 0; s < m; ++s) dp[0][s] = k * s + a[0][s % m];
minn[0] = INF;
for (int s = 0; s < m; ++s) minn[0] = min(minn[0], dp[0][s]);
for (int j = 1; j < m; ++j) {
for (int s = 0; s < m; ++s) dp[j][s] = dp[j-1][s] + a[0][(j + s) % m];
minn[j] = INF;
for (int s = 0; s < m; ++s) minn[j] = min(minn[j], dp[j][s]);
}
for (int i = 1; i < n; ++i) {
LL ddp[205][205];
LL tmp[205];
for (int j = 0; j < m; ++j){
for (int s = 0; s < m; ++s){
ddp[j][s] = INF;
}
}
for (int s = 0; s < m; ++s) ddp[0][s] = minn[0] + k * s + a[i][s % m];
tmp[0] = INF;
for (int s = 0; s < m; ++s) tmp[0] = min(tmp[0], ddp[0][s]);
for (int j = 1; j < m; ++j) {
for (int s = 0; s < m; ++s) {
ddp[j][s] = min(minn[j] + k * s + a[i][(j + s) % m], ddp[j-1][s] + a[i][(j + s) % m]);
}
tmp[j] = INF;
for (int s = 0; s < m; ++s) tmp[j] = min(tmp[j], ddp[j][s]);
}
memcpy(dp, ddp, sizeof(ddp));
memcpy(minn, tmp, sizeof(tmp));
}
cout << minn[m-1] << '\n';
}
return 0;
}