#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9+7;
const long long INFLL = 1e18+7;
const int MAXN = 1e5+7;
const vector <int> dx = {-1, +0, +0, +1, +0, +0};
const vector <int> dy = {+0, -1, +0, +0, +1, +0};
const vector <int> dz = {+0, +0, -1, +0, +0, +1};
int n;
long long a[107][107][107];
long long Dist[107][107][107];
bool Check[107][107][107];
struct dimension{
int x,y,z;
dimension(int _x, int _y, int _z)
{x = _x; y = _y; z = _z;}
};
struct cmp
{
bool operator()(pair<int,dimension> &a, pair<int,dimension> &b)
{
return a.first > b.first;
}
};
bool check(int i, int j, int k)
{
return (1 <= i && i <= n && 1 <= j && j <= n && 1 <= k && k <= n);
}
long long Dijkstra(int si, int sj, int sk)
{
Dist[si][sj][sk] = 0;
priority_queue<pair<int,dimension>, vector<pair<int,dimension>>, cmp> pq;
pq.emplace(0,dimension(si,sj,sk));
while (!pq.empty())
{
dimension u = pq.top().second;
pq.pop();
if (Check[u.x][u.y][u.z]) continue;
Check[u.x][u.y][u.z] = 1;
for (int i = 0; i < 6; i++)
{
dimension v = dimension(u.x+dx[i], u.y+dy[i], u.z+dz[i]);
long long w = a[v.x][v.y][v.z];
if (!check(v.x,v.y,v.z)) continue;
if (Dist[v.x][v.y][v.z] > Dist[u.x][u.y][u.z] + w)
{
Dist[v.x][v.y][v.z] = Dist[u.x][u.y][u.z] + w;
pq.emplace(Dist[v.x][v.y][v.z],dimension(v.x,v.y,v.z));
}
}
}
return Dist[n][n][n];
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = 1; k <= n; k++)
cin >> a[i][j][k];
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = 1; k <= n; k++)
Dist[i][j][k] = INFLL;
cout << Dijkstra(1,1,1);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IElORiA9IDFlOSs3Owpjb25zdCBsb25nIGxvbmcgSU5GTEwgPSAxZTE4Kzc7CmNvbnN0IGludCBNQVhOID0gMWU1Kzc7CmNvbnN0IHZlY3RvciA8aW50PiBkeCA9IHstMSwgKzAsICswLCArMSwgKzAsICswfTsgCmNvbnN0IHZlY3RvciA8aW50PiBkeSA9IHsrMCwgLTEsICswLCArMCwgKzEsICswfTsKY29uc3QgdmVjdG9yIDxpbnQ+IGR6ID0geyswLCArMCwgLTEsICswLCArMCwgKzF9OwoKaW50IG47CmxvbmcgbG9uZyBhWzEwN11bMTA3XVsxMDddOwpsb25nIGxvbmcgRGlzdFsxMDddWzEwN11bMTA3XTsKYm9vbCBDaGVja1sxMDddWzEwN11bMTA3XTsKCnN0cnVjdCBkaW1lbnNpb257CglpbnQgeCx5LHo7CglkaW1lbnNpb24oaW50IF94LCBpbnQgX3ksIGludCBfeikKCXt4ID0gX3g7IHkgPSBfeTsgeiA9IF96O30KfTsKCnN0cnVjdCBjbXAKewoJYm9vbCBvcGVyYXRvcigpKHBhaXI8aW50LGRpbWVuc2lvbj4gJmEsIHBhaXI8aW50LGRpbWVuc2lvbj4gJmIpCgl7CgkJcmV0dXJuIGEuZmlyc3QgPiBiLmZpcnN0OwoJfQp9OwoKYm9vbCBjaGVjayhpbnQgaSwgaW50IGosIGludCBrKQp7CglyZXR1cm4gKDEgPD0gaSAmJiBpIDw9IG4gJiYgMSA8PSBqICYmIGogPD0gbiAmJiAxIDw9IGsgJiYgayA8PSBuKTsJCn0KCmxvbmcgbG9uZyBEaWprc3RyYShpbnQgc2ksIGludCBzaiwgaW50IHNrKQp7CglEaXN0W3NpXVtzal1bc2tdID0gMDsKCXByaW9yaXR5X3F1ZXVlPHBhaXI8aW50LGRpbWVuc2lvbj4sIHZlY3RvcjxwYWlyPGludCxkaW1lbnNpb24+PiwgY21wPiBwcTsKCXBxLmVtcGxhY2UoMCxkaW1lbnNpb24oc2ksc2osc2spKTsKCgl3aGlsZSAoIXBxLmVtcHR5KCkpCgl7CgkJZGltZW5zaW9uIHUgPSBwcS50b3AoKS5zZWNvbmQ7CgkJcHEucG9wKCk7CgoJCWlmIChDaGVja1t1LnhdW3UueV1bdS56XSkgY29udGludWU7CgkJQ2hlY2tbdS54XVt1LnldW3Uuel0gPSAxOwoKCQlmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykKCQl7CgkJCWRpbWVuc2lvbiB2ID0gZGltZW5zaW9uKHUueCtkeFtpXSwgdS55K2R5W2ldLCB1LnorZHpbaV0pOwoJCQlsb25nIGxvbmcgdyA9IGFbdi54XVt2LnldW3Yuel07CgoJCQlpZiAoIWNoZWNrKHYueCx2Lnksdi56KSkgY29udGludWU7CgoJCQlpZiAoRGlzdFt2LnhdW3YueV1bdi56XSA+IERpc3RbdS54XVt1LnldW3Uuel0gKyB3KQoJCQl7CgkJCQlEaXN0W3YueF1bdi55XVt2LnpdID0gRGlzdFt1LnhdW3UueV1bdS56XSArIHc7CgkJCQlwcS5lbXBsYWNlKERpc3Rbdi54XVt2LnldW3Yuel0sZGltZW5zaW9uKHYueCx2Lnksdi56KSk7CgkJCX0KCQl9Cgl9CglyZXR1cm4gRGlzdFtuXVtuXVtuXTsKfQoKaW50IG1haW4oKQp7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgY2luLnRpZShudWxscHRyKTsKICAKCWNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQoJCWZvciAoaW50IGogPSAxOyBqIDw9IG47IGorKykKCQkJZm9yIChpbnQgayA9IDE7IGsgPD0gbjsgaysrKQoJCQkJY2luID4+IGFbaV1bal1ba107CgkJCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgkJZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKQoJCQlmb3IgKGludCBrID0gMTsgayA8PSBuOyBrKyspCgkJCQlEaXN0W2ldW2pdW2tdID0gSU5GTEw7CgkKCWNvdXQgPDwgRGlqa3N0cmEoMSwxLDEpOwogIAogIHJldHVybiAwOwp9