#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll INF = 4e18;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
ll w;
cin >> n >> m >> w;
vector<vector<int>> a(n, vector<int>(m));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
ll ans = INF, bst1 = INF, bst2 = INF;
// BFS from start
{
vector<vector<ll>> d(n, vector<ll>(m, INF));
if (a[0][0] != -1) {
queue<pair<int, int>> q;
q.push({0, 0});
d[0][0] = 0;
while (!q.empty()) {
auto [x, y] = q.front();
q.pop();
if (a[x][y] > 0)
bst1 = min(bst1, d[x][y] + (ll)a[x][y]);
for (int k = 0; k < 4; k++) {
int nx = x + dx[k];
int ny = y + dy[k];
if (nx < 0 || ny < 0 || nx >= n || ny >= m)
continue;
if (a[nx][ny] == -1)
continue;
if (d[nx][ny] != INF)
continue;
d[nx][ny] = d[x][y] + w;
q.push({nx, ny});
}
}
ans = d[n - 1][m - 1];
}
}
// BFS from end
{
vector<vector<ll>> d(n, vector<ll>(m, INF));
if (a[n - 1][m - 1] != -1) {
queue<pair<int, int>> q;
q.push({n - 1, m - 1});
d[n - 1][m - 1] = 0;
while (!q.empty()) {
auto [x, y] = q.front();
q.pop();
if (a[x][y] > 0)
bst2 = min(bst2, d[x][y] + (ll)a[x][y]);
for (int k = 0; k < 4; k++) {
int nx = x + dx[k];
int ny = y + dy[k];
if (nx < 0 || ny < 0 || nx >= n || ny >= m)
continue;
if (a[nx][ny] == -1)
continue;
if (d[nx][ny] != INF)
continue;
d[nx][ny] = d[x][y] + w;
q.push({nx, ny});
}
}
}
}
if (bst1 != INF && bst2 != INF)
ans = min(ans, bst1 + bst2);
cout << (ans == INF ? -1 : ans);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKY29uc3QgbGwgSU5GID0gNGUxODsKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGludCBuLCBtOwogICAgbGwgdzsKICAgIGNpbiA+PiBuID4+IG0gPj4gdzsKCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGEobiwgdmVjdG9yPGludD4obSkpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKQogICAgICAgICAgICBjaW4gPj4gYVtpXVtqXTsKCiAgICBpbnQgZHhbXSA9IHsxLCAtMSwgMCwgMH07CiAgICBpbnQgZHlbXSA9IHswLCAwLCAxLCAtMX07CgogICAgbGwgYW5zID0gSU5GLCBic3QxID0gSU5GLCBic3QyID0gSU5GOwoKICAgIC8vIEJGUyBmcm9tIHN0YXJ0CiAgICB7CiAgICAgICAgdmVjdG9yPHZlY3RvcjxsbD4+IGQobiwgdmVjdG9yPGxsPihtLCBJTkYpKTsKCiAgICAgICAgaWYgKGFbMF1bMF0gIT0gLTEpIHsKICAgICAgICAgICAgcXVldWU8cGFpcjxpbnQsIGludD4+IHE7CiAgICAgICAgICAgIHEucHVzaCh7MCwgMH0pOwogICAgICAgICAgICBkWzBdWzBdID0gMDsKCiAgICAgICAgICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICBhdXRvIFt4LCB5XSA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgICAgIHEucG9wKCk7CgogICAgICAgICAgICAgICAgaWYgKGFbeF1beV0gPiAwKQogICAgICAgICAgICAgICAgICAgIGJzdDEgPSBtaW4oYnN0MSwgZFt4XVt5XSArIChsbClhW3hdW3ldKTsKCiAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7IGsrKykgewogICAgICAgICAgICAgICAgICAgIGludCBueCA9IHggKyBkeFtrXTsKICAgICAgICAgICAgICAgICAgICBpbnQgbnkgPSB5ICsgZHlba107CgogICAgICAgICAgICAgICAgICAgIGlmIChueCA8IDAgfHwgbnkgPCAwIHx8IG54ID49IG4gfHwgbnkgPj0gbSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFbbnhdW255XSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbbnhdW255XSAhPSBJTkYpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICBkW254XVtueV0gPSBkW3hdW3ldICsgdzsKICAgICAgICAgICAgICAgICAgICBxLnB1c2goe254LCBueX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBhbnMgPSBkW24gLSAxXVttIC0gMV07CiAgICAgICAgfQogICAgfQoKICAgIC8vIEJGUyBmcm9tIGVuZAogICAgewogICAgICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PiBkKG4sIHZlY3RvcjxsbD4obSwgSU5GKSk7CgogICAgICAgIGlmIChhW24gLSAxXVttIC0gMV0gIT0gLTEpIHsKICAgICAgICAgICAgcXVldWU8cGFpcjxpbnQsIGludD4+IHE7CiAgICAgICAgICAgIHEucHVzaCh7biAtIDEsIG0gLSAxfSk7CiAgICAgICAgICAgIGRbbiAtIDFdW20gLSAxXSA9IDA7CgogICAgICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICAgICAgYXV0byBbeCwgeV0gPSBxLmZyb250KCk7CiAgICAgICAgICAgICAgICBxLnBvcCgpOwoKICAgICAgICAgICAgICAgIGlmIChhW3hdW3ldID4gMCkKICAgICAgICAgICAgICAgICAgICBic3QyID0gbWluKGJzdDIsIGRbeF1beV0gKyAobGwpYVt4XVt5XSk7CgogICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyBrKyspIHsKICAgICAgICAgICAgICAgICAgICBpbnQgbnggPSB4ICsgZHhba107CiAgICAgICAgICAgICAgICAgICAgaW50IG55ID0geSArIGR5W2tdOwoKICAgICAgICAgICAgICAgICAgICBpZiAobnggPCAwIHx8IG55IDwgMCB8fCBueCA+PSBuIHx8IG55ID49IG0pCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGlmIChhW254XVtueV0gPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGlmIChkW254XVtueV0gIT0gSU5GKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgZFtueF1bbnldID0gZFt4XVt5XSArIHc7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHtueCwgbnl9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoYnN0MSAhPSBJTkYgJiYgYnN0MiAhPSBJTkYpCiAgICAgICAgYW5zID0gbWluKGFucywgYnN0MSArIGJzdDIpOwoKICAgIGNvdXQgPDwgKGFucyA9PSBJTkYgPyAtMSA6IGFucyk7CgogICAgcmV0dXJuIDA7Cn0=