#include<bits/stdc++.h>
using namespace std;
int aa,b,c,m;
int ans=0;
int a[105][105][105];
int vis[105][105][105];
bool check(int x,int y,int z){
if(x>0&&y>0&&z>0&&x<=aa&&y<=b&&z<=c){
return true;
}else{
return false;
}
}
void dfs(int x,int y,int z){
vis[x][y][z]=1;
if(check(x+1,y,z)&&abs(a[x][y][z]-a[x+1][y][z])<=m){
dfs(x+1,y,z);
}if(check(x-1,y,z)&&abs(a[x][y][z]-a[x-1][y][z])<=m){
dfs(x-1,y,z);
}if(check(x,y+1,z)&&abs(a[x][y][z]-a[x][y+1][z])<=m){
dfs(x,y+1,z);
}if(check(x,y-1,z)&&abs(a[x][y][z]-a[x][y-1][z])<=m){
dfs(x,y-1,z);
}if(check(x,y,z+1)&&abs(a[x][y][z]-a[x][y][z+1])<=m){
dfs(x,y,z+1);
}if(check(x,y,z-1)&&abs(a[x][y][z]-a[x][y][z-1])<=m){
dfs(x,y,z-1);
}
}
int main(){
memset(vis,0,sizeof(vis));
cin>>aa>>b>>c>>m;
for(int i=1;i<=aa;i++){
for(int j=1;j<=b;j++){
for(int k=1;k<=c;k++){
cin>>a[i][j][k];
}
}
}for(int i=1;i<=aa;i++){
for(int j=1;j<=b;j++){
for(int k=1;k<=c;k++){
if(vis[i][j][k]==0){
dfs(i,j,k);
ans++;
}
}
}
}cout<<ans<<endl;
}
check写错了是
if(x>0&&y>0&&z>0&&x<=aa&&y<=b&&z<=c&&vis[i][j][k]==0){
return true;
}else{
return false;
}