#include<stdio.h>
#include<queue>
using namespace std;
int D[121][121], a[121][121];
int dx[16] = { 1,-1,0,0,3,2,1,0,-1,-2,-3,-2,-1,0,1,2 };
int dy[16] = { 0,0,1,-1,0,1,2,3,2,1,0,-1,-2,-3,-2,-1 };
struct xy {
int x, y, k;
bool operator<(const xy p)const { return k > p.k; }
};
int main() {
int n, t;
int i, j;
scanf("%d%d", &n, &t);
for (i = 0; i < n; i++) for (j = 0; j < n; j++)scanf("%d", &a[i][j]), D[i][j] = -1;
D[0][0] = 0;
priority_queue<xy>que;
que.push({ 0,0,0 });
while (!que.empty()) {
xy nowxy = que.top();
que.pop();
int nowx = nowxy.x, nowy = nowxy.y;
if (D[nowx][nowy] != nowxy.k)continue;
for (i = 0; i < 16; i++) {
int nextx = nowx + dx[i];
int nexty = nowy + dy[i];
if (nextx < 0 || nextx >= n || nowy < 0 || nowy >= n)continue;
if (D[nextx][nexty] == -1 || D[nextx][nexty]>D[nowx][nowy] + t * 3 + a[nextx][nexty]) {
D[nextx][nexty] = D[nowx][nowy] + t * 3 + a[nextx][nexty];
que.push({ nextx,nexty,D[nextx][nexty] });
}
}
}
int x, y, ans = -1;
x = y = n - 1;
for (i = 0; i <= 2; i++) {
for (j = 0; j <= 2; j++) {
if (i + j >= 3)continue;
if (x - i < 0 || y - j < 0)continue;
if (ans == -1 || ans >(i + j)*t + D[x - i][y - j])ans = (i + j)*t + D[x - i][y - j];
}
}
printf("%d", ans);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBEWzEyMV1bMTIxXSwgYVsxMjFdWzEyMV07CmludCBkeFsxNl0gPSB7IDEsLTEsMCwwLDMsMiwxLDAsLTEsLTIsLTMsLTIsLTEsMCwxLDIgfTsKaW50IGR5WzE2XSA9IHsgMCwwLDEsLTEsMCwxLDIsMywyLDEsMCwtMSwtMiwtMywtMiwtMSB9OwpzdHJ1Y3QgeHkgewoJaW50IHgsIHksIGs7Cglib29sIG9wZXJhdG9yPChjb25zdCB4eSBwKWNvbnN0IHsgcmV0dXJuIGsgPiBwLms7IH0KfTsKaW50IG1haW4oKSB7CglpbnQgbiwgdDsKCWludCBpLCBqOwoJc2NhbmYoIiVkJWQiLCAmbiwgJnQpOwoJZm9yIChpID0gMDsgaSA8IG47IGkrKykgZm9yIChqID0gMDsgaiA8IG47IGorKylzY2FuZigiJWQiLCAmYVtpXVtqXSksIERbaV1bal0gPSAtMTsKCURbMF1bMF0gPSAwOwoJcHJpb3JpdHlfcXVldWU8eHk+cXVlOwoJcXVlLnB1c2goeyAwLDAsMCB9KTsKCXdoaWxlICghcXVlLmVtcHR5KCkpIHsKCQl4eSBub3d4eSA9IHF1ZS50b3AoKTsKCQlxdWUucG9wKCk7CgkJaW50IG5vd3ggPSBub3d4eS54LCBub3d5ID0gbm93eHkueTsKCQlpZiAoRFtub3d4XVtub3d5XSAhPSBub3d4eS5rKWNvbnRpbnVlOwoJCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CgkJCWludCBuZXh0eCA9IG5vd3ggKyBkeFtpXTsKCQkJaW50IG5leHR5ID0gbm93eSArIGR5W2ldOwoJCQlpZiAobmV4dHggPCAwIHx8IG5leHR4ID49IG4gfHwgbm93eSA8IDAgfHwgbm93eSA+PSBuKWNvbnRpbnVlOwoJCQlpZiAoRFtuZXh0eF1bbmV4dHldID09IC0xIHx8IERbbmV4dHhdW25leHR5XT5EW25vd3hdW25vd3ldICsgdCAqIDMgKyBhW25leHR4XVtuZXh0eV0pIHsKCQkJCURbbmV4dHhdW25leHR5XSA9IERbbm93eF1bbm93eV0gKyB0ICogMyArIGFbbmV4dHhdW25leHR5XTsKCQkJCXF1ZS5wdXNoKHsgbmV4dHgsbmV4dHksRFtuZXh0eF1bbmV4dHldIH0pOwoJCQl9CgkJfQoJfQoJaW50IHgsIHksIGFucyA9IC0xOwoJeCA9IHkgPSBuIC0gMTsKCWZvciAoaSA9IDA7IGkgPD0gMjsgaSsrKSB7CgkJZm9yIChqID0gMDsgaiA8PSAyOyBqKyspIHsKCQkJaWYgKGkgKyBqID49IDMpY29udGludWU7CgkJCWlmICh4IC0gaSA8IDAgfHwgeSAtIGogPCAwKWNvbnRpbnVlOwoJCQlpZiAoYW5zID09IC0xIHx8IGFucyA+KGkgKyBqKSp0ICsgRFt4IC0gaV1beSAtIGpdKWFucyA9IChpICsgaikqdCArIERbeCAtIGldW3kgLSBqXTsKCQl9Cgl9CglwcmludGYoIiVkIiwgYW5zKTsKCXJldHVybiAwOwp9