/*
#include <stdio.h>
int move(int i,int arr[][101],int arrsize[],int atact[])
{
int j;
int x = 0;
if(!atact[i])
for(j = 0; j < arrsize[i]; j++)
{
if(atact[arr[i][j]] == 1)
{
x += 1;
atact[i] = 1;
goto a;
}
}
if(atact[i])
{
x++;
a:
for(j = 0; j < arrsize[i]; j++)
{
if(atact[arr[i][j]]==0)
{
atact[arr[i][j]] = 1;
x += move(arr[i][j],arr,arrsize,atact);
}
}
}
return x;
}
int main()
{
int arr[100][101]= {{0,},};
int arrsize[100]= {0,};
int atact[100]= {0,};
atact[1] = 1;
int i,n,m,j;
int k,l,count=0;
scanf("%d%d",&n,&m);
for(i = 0; i < m; i++)
{
scanf("%d %d",&k,&l);
arr[k][arrsize[k]] = l;
arrsize[k]++;
arr[l][arrsize[l]] = k;
arrsize[l]++;
}
count = move(1,arr,arrsize,atact);
printf("%d",count-1);
}
*/
#include <stdio.h>
int m,n,h;
int py[6] = {1,-1,0,0,0,0};
int px[6] = {0,0,1,-1,0,0};
int pz[6] = {0,0,0,0,-1,1};
int arr[5000000][3];
int start=0;
int f(int map[][110][110],int size)
{
int size2 = 0;
int i,p;
int aa;
for(i = start; i < size; i++)
{
int y = arr[i][0];
int x = arr[i][1];
int z = arr[i][2];
for(p = 0; p <6; p++)
{
if(y+py[p] < h&&y+py[p] >= 0&&x+px[p] < n&&x+px[p] >= 0&&z+pz[p] < m&&z+pz[p] >= 0)
{
if(map[y+py[p]][x+px[p]][z+pz[p]]==0)
{
map[y+py[p]][x+px[p]][z+pz[p]]=1;
arr[size2][0] = y+py[p];
arr[size2][1] = x+px[p];
arr[size2][2] = z+pz[p];
size2++;
}
}
}
}
if(size2!=0)
{
int aa=f(map,size2);
return aa+1==0?-1:aa+1;
}
for(i = 0;i < h;i++)
{
for(int j = 0;j < n;j++)
{
for(int k = 0;k < m;k++)
{
if(map[i][j][k] == 0)
{
return -1;
}
}
}
}
return 0;
}
int main()
{
int arrsize=0,day;
int map[110][110][110] = {{{0,},},};
int i,j,k;
scanf("%d%d%d",&m,&n,&h);
for(i = 0; i < h; i++)
{
for(j = 0; j < n; j++)
{
for(k = 0; k < m; k++)
{
scanf("%d",&map[i][j][k]);
if(map[i][j][k]==1)
{
arr[arrsize][0] = i;
arr[arrsize][1] = j;
arr[arrsize][2] = k;
arrsize++;
}
}
}
}
day = f(map,arrsize);
printf("%d",day);
}