#include <queue>
#include <iostream>
using namespace std;
struct pos {
int x;
int y;
int z;
};
int n, m, k;
queue<pos> q;
int arr[105][105][105];
int map[105][105][105];
pos make_pos(int x, int y, int z) {
pos return_pos = {x, y, z};
return return_pos;
}
pos change(pos tmp, int i) {
if (i == 1) return make_pos(tmp.x - 1, tmp.y, tmp.z);
else if (i == 2) return make_pos(tmp.x + 1, tmp.y, tmp.z);
else if (i == 3) return make_pos(tmp.x, tmp.y - 1, tmp.z);
else if (i == 4) return make_pos(tmp.x, tmp.y + 1, tmp.z);
else if (i == 5) return make_pos(tmp.x, tmp.y, tmp.z - 1);
else if (i == 6) return make_pos(tmp.x, tmp.y, tmp.z + 1);
}
bool skip(pos tmp) {
if (tmp.x <= 0 || tmp.y <= 0 || tmp.z <= 0) return true;
if (tmp.x > k || tmp.y > m || tmp.z > n) return true;
if (arr[tmp.x][tmp.y][tmp.z] == -1) return true;
if (map[tmp.x][tmp.y][tmp.z] >= 1) return true;
return false;
}
void process(pos tmp, pos xyz)
{
map[tmp.x][tmp.y][tmp.z] = map[xyz.x][xyz.y][xyz.z] + 1;
q.push(tmp);
}
void bfs()
{
while (!q.empty()) {
pos xyz = q.front();
q.pop();
for (int i = 1; i <= 6; i++) {
pos tmp = xyz;
tmp = change(tmp, i);
if (skip(tmp)) continue;
process(tmp, xyz);
}
}
int max1 = 0;
for (int i = 1; i <= k; i++) {
for (int j = 1; j <= m; j++) {
for (int k1 = 1; k1 <= n; k1++) {
if (map[i][j][k1] == 0 && arr[i][j][k1] != -1 && arr[i][j][k1] != 1) {
cout << "-1\n";
return;
} else {
max1 = max(max1, map[i][j][k1]);
}
}
}
}
cout << max1 << "\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int cnt = 0;
cin >> n >> m >> k;
for (int i = 1; i <= k; i++) {
for (int j = 1; j <= m; j++) {
for (int k1 = 1; k1 <= n; k1++) {
cin >> arr[i][j][k1];
if (arr[i][j][k1] == 1) q.push(make_pos(i, j, k1));
if (arr[i][j][k1] == 1 || arr[i][j][k1] == -1) cnt++;
}
}
}
if (cnt == n * m * k) cout << "0\n";
else bfs();
}
I2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgcG9zIHsKICAgIGludCB4OwogICAgaW50IHk7CiAgICBpbnQgejsKfTsKCmludCBuLCBtLCBrOwpxdWV1ZTxwb3M+IHE7CmludCBhcnJbMTA1XVsxMDVdWzEwNV07CmludCBtYXBbMTA1XVsxMDVdWzEwNV07Cgpwb3MgbWFrZV9wb3MoaW50IHgsIGludCB5LCBpbnQgeikgewogICAgcG9zIHJldHVybl9wb3MgPSB7eCwgeSwgen07CiAgICByZXR1cm4gcmV0dXJuX3BvczsKfQoKcG9zIGNoYW5nZShwb3MgdG1wLCBpbnQgaSkgewogICAgaWYgKGkgPT0gMSkgcmV0dXJuIG1ha2VfcG9zKHRtcC54IC0gMSwgdG1wLnksIHRtcC56KTsKICAgIGVsc2UgaWYgKGkgPT0gMikgcmV0dXJuIG1ha2VfcG9zKHRtcC54ICsgMSwgdG1wLnksIHRtcC56KTsKICAgIGVsc2UgaWYgKGkgPT0gMykgcmV0dXJuIG1ha2VfcG9zKHRtcC54LCB0bXAueSAtIDEsIHRtcC56KTsKICAgIGVsc2UgaWYgKGkgPT0gNCkgcmV0dXJuIG1ha2VfcG9zKHRtcC54LCB0bXAueSArIDEsIHRtcC56KTsKICAgIGVsc2UgaWYgKGkgPT0gNSkgcmV0dXJuIG1ha2VfcG9zKHRtcC54LCB0bXAueSwgdG1wLnogLSAxKTsKICAgIGVsc2UgaWYgKGkgPT0gNikgcmV0dXJuIG1ha2VfcG9zKHRtcC54LCB0bXAueSwgdG1wLnogKyAxKTsKfQoKYm9vbCBza2lwKHBvcyB0bXApIHsKICAgIGlmICh0bXAueCA8PSAwIHx8IHRtcC55IDw9IDAgfHwgdG1wLnogPD0gMCkgcmV0dXJuIHRydWU7CiAgICBpZiAodG1wLnggPiBrIHx8IHRtcC55ID4gbSB8fCB0bXAueiA+IG4pIHJldHVybiB0cnVlOwogICAgaWYgKGFyclt0bXAueF1bdG1wLnldW3RtcC56XSA9PSAtMSkgcmV0dXJuIHRydWU7CiAgICBpZiAobWFwW3RtcC54XVt0bXAueV1bdG1wLnpdID49IDEpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwp9Cgp2b2lkIHByb2Nlc3MocG9zIHRtcCwgcG9zIHh5eikKewogICAgbWFwW3RtcC54XVt0bXAueV1bdG1wLnpdID0gbWFwW3h5ei54XVt4eXoueV1beHl6LnpdICsgMTsKICAgIHEucHVzaCh0bXApOwp9Cgp2b2lkIGJmcygpCnsKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgcG9zIHh5eiA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDY7IGkrKykgewogICAgICAgICAgICBwb3MgdG1wID0geHl6OwogICAgICAgICAgICB0bXAgPSBjaGFuZ2UodG1wLCBpKTsKICAgICAgICAgICAgaWYgKHNraXAodG1wKSkgY29udGludWU7CiAgICAgICAgICAgIHByb2Nlc3ModG1wLCB4eXopOwogICAgICAgIH0gIAogICAgfQogICAgaW50IG1heDEgPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gazsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbTsgaisrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGsxID0gMTsgazEgPD0gbjsgazErKykgewogICAgICAgICAgICAgICAgaWYgKG1hcFtpXVtqXVtrMV0gPT0gMCAmJiBhcnJbaV1bal1bazFdICE9IC0xICYmIGFycltpXVtqXVtrMV0gIT0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgIi0xXG4iOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbWF4MSA9IG1heChtYXgxLCBtYXBbaV1bal1bazFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgbWF4MSA8PCAiXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBjb3V0LnRpZShOVUxMKTsKCiAgICBpbnQgY250ID0gMDsKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewogICAgICAgICAgICBmb3IgKGludCBrMSA9IDE7IGsxIDw9IG47IGsxKyspIHsKICAgICAgICAgICAgICAgIGNpbiA+PiBhcnJbaV1bal1bazFdOwogICAgICAgICAgICAgICAgaWYgKGFycltpXVtqXVtrMV0gPT0gMSkgcS5wdXNoKG1ha2VfcG9zKGksIGosIGsxKSk7CiAgICAgICAgICAgICAgICBpZiAoYXJyW2ldW2pdW2sxXSA9PSAxIHx8IGFycltpXVtqXVtrMV0gPT0gLTEpIGNudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKGNudCA9PSBuICogbSAqIGspIGNvdXQgPDwgIjBcbiI7CiAgICBlbHNlIGJmcygpOwp9