#include <bits/stdc++.h>
using namespace std;
struct PeanutNode {
int x, y, PeanutSum;
PeanutNode() {
x = y = PeanutSum = 0;
}
PeanutNode(int _x, int _y, int sum) {
x = _x;
y = _y;
PeanutSum = sum;
}
inline const bool operator<(const PeanutNode _ano) const {
return PeanutSum < _ano.PeanutSum;
}
};
int m, n, k, p, ans = 0;
priority_queue<PeanutNode> pq;
inline int distance(PeanutNode a, PeanutNode b) {
return abs(a.x - b.x) + abs(a.y - b.y);
}
inline void solve(PeanutNode lastNode, int restTime) {
int requireTime = distance(lastNode, pq.top()) + 1;
if (requireTime + pq.top().x <= restTime) {
PeanutNode next = pq.top();
pq.pop();
restTime -= requireTime;
ans += next.PeanutSum;
solve(next, restTime);
}
}
int main(int argc, char const *argv[]) {
scanf("%d%d%d", &m, &n, &k);
for (int i = 1; i <= m;i++) {
for (int j = 1; j <= n;j++) {
scanf("%d", &p);
if (p) {
pq.push(PeanutNode(i, j, p));
}
}
}
solve(PeanutNode(0, pq.top().y, 0), k);
printf("%d\n", ans);
system("pause");
return 0;
}