#include <iostream>
#include <cstdio>
#include <queue>
#include <utility>
using namespace std;
typedef pair<int, pair<int, int> > piii;
int n,m,e;
int arr[101][101][101] = {0,};
int dx[6] = { 0,1,0,-1,0,0 };
int dy[6] = { 1,0,-1,0,0,0 };
int dz[6] = { 0,0,0,0,1,-1 };
int count = 0;
queue<piii> where;
bool findAll(){
for(int h = 0; h < e; h++){
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(arr[i][j][h] == 0){ return false;}
if(count < arr[i][j][h]) count = arr[i][j][h];
}
}
}return true;
}
bool print(){
for(int h = 0; h < e; h++){
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
printf("%d ",arr[i][j][h]);
}puts("");
}
}return true;
}
int main() {
scanf("%d%d%d", &n, &m, &e);
for(int h = 0; h < e; h++){
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
scanf("%d",&arr[i][j][h]);
if(arr[i][j][h] == 1){
where.push({i,{j,h}});
}
}
}
}
int kq = where.size();
if(kq == n *m *e) count = 0;
else if(kq == 0) count = -1;
else{
while(!where.empty()){
int y = where.front().first;
int x = where.front().second.first;
int z = where.front().second.second;
where.pop();
for(int i = 0; i < 6; i++){
int n_y = y + dy[i];
int n_x = x + dx[i];
int n_z = z + dz[i];
if( ((n_y >= 0 && n_y < m)
&& (n_z >= 0 && n_z < e)
&& (n_x >= 0 && n_x < n))
&& arr[n_y][n_x][n_z] == 0){
arr[n_y][n_x][n_z] = arr[y][x][z] + 1;
where.push({n_y,{n_x,n_z}});
}
}
}
if(findAll()) count--;
else count = -1;
}
printf("%d",count);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDx1dGlsaXR5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHBhaXI8aW50LCBwYWlyPGludCwgaW50PiA+IHBpaWk7CmludCBuLG0sZTsKaW50IGFyclsxMDFdWzEwMV1bMTAxXSA9IHswLH07CmludCBkeFs2XSA9IHsgMCwxLDAsLTEsMCwwIH07CmludCBkeVs2XSA9IHsgMSwwLC0xLDAsMCwwIH07CmludCBkels2XSA9IHsgMCwwLDAsMCwxLC0xIH07CmludCBjb3VudCA9IDA7CnF1ZXVlPHBpaWk+IHdoZXJlOwoKYm9vbCBmaW5kQWxsKCl7Cglmb3IoaW50IGggPSAwOyBoIDwgZTsgaCsrKXsKCSAgICBmb3IoaW50IGkgPSAwOyBpIDwgbTsgaSsrKXsKCQkJZm9yKGludCBqID0gMDsgaiA8IG47IGorKyl7CgkJCQlpZihhcnJbaV1bal1baF0gPT0gMCl7IHJldHVybiBmYWxzZTt9CgkJCQlpZihjb3VudCA8IGFycltpXVtqXVtoXSkgY291bnQgPSBhcnJbaV1bal1baF07CgkJCX0KCSAgICB9Cgl9cmV0dXJuIHRydWU7Cn0gICAgCmJvb2wgcHJpbnQoKXsKCWZvcihpbnQgaCA9IDA7IGggPCBlOyBoKyspewoJICAgIGZvcihpbnQgaSA9IDA7IGkgPCBtOyBpKyspewoJCQlmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKXsKCQkJCXByaW50ZigiJWQgIixhcnJbaV1bal1baF0pOwoJCQl9cHV0cygiIik7CgkgICAgfQoJfXJldHVybiB0cnVlOwp9ICAgIAoKaW50IG1haW4oKSB7CglzY2FuZigiJWQlZCVkIiwgJm4sICZtLCAmZSk7Cglmb3IoaW50IGggPSAwOyBoIDwgZTsgaCsrKXsKCQlmb3IoaW50IGkgPSAwOyBpIDwgbTsgaSsrKXsKCQkJZm9yKGludCBqID0gMDsgaiA8IG47IGorKyl7CgkJCQlzY2FuZigiJWQiLCZhcnJbaV1bal1baF0pOwoJICAgICAgICAgICAgaWYoYXJyW2ldW2pdW2hdID09IDEpewoJICAgICAgICAgICAgICAgIHdoZXJlLnB1c2goe2kse2osaH19KTsgIAoJICAgICAgICAgICAgfQoJCQl9CgkJfQoJfQogICAgaW50IGtxID0gd2hlcmUuc2l6ZSgpOwoJaWYoa3EgPT0gbiAqbSAqZSkgY291bnQgPSAwOwogICAgZWxzZSBpZihrcSA9PSAwKSBjb3VudCA9IC0xOwogICAgZWxzZXsKCSAgICAKCQl3aGlsZSghd2hlcmUuZW1wdHkoKSl7CgkJCWludCB5ID0gd2hlcmUuZnJvbnQoKS5maXJzdDsKCQkJaW50IHggPSB3aGVyZS5mcm9udCgpLnNlY29uZC5maXJzdDsKCQkJaW50IHogPSB3aGVyZS5mcm9udCgpLnNlY29uZC5zZWNvbmQ7CgkJCXdoZXJlLnBvcCgpOwoJCQlmb3IoaW50IGkgPSAwOyBpIDwgNjsgaSsrKXsKCQkJCWludCBuX3kgPSB5ICsgZHlbaV07CgkJCQlpbnQgbl94ID0geCArIGR4W2ldOwoJCQkJaW50IG5feiA9IHogKyBkeltpXTsKCQkJCWlmKCAoKG5feSA+PSAwICYmIG5feSA8IG0pCgkJCQkmJiAobl96ID49IDAgJiYgbl96IDwgZSkgCgkJCQkmJiAobl94ID49IDAgJiYgbl94IDwgbikpIAoJCQkJJiYgYXJyW25feV1bbl94XVtuX3pdID09IDApewoJCQkJCSAgICBhcnJbbl95XVtuX3hdW25fel0gPSBhcnJbeV1beF1bel0gKyAxOwoJCQkJCSAgICB3aGVyZS5wdXNoKHtuX3kse25feCxuX3p9fSk7CgkJCQkgfQoJCQl9CgkJfQogICAgICAgIGlmKGZpbmRBbGwoKSkgIGNvdW50LS07CiAgICAgICAgZWxzZSBjb3VudCA9IC0xOwogICAgfQoJCiAgICBwcmludGYoIiVkIixjb3VudCk7CglyZXR1cm4gMDsKfQ==