#include <bits/stdc++.h>
using namespace std;
int n, r, l, visited[51][51], a[51][51], cnt, sum;
vector<pair<int, int>> v;
int dy[] = {-1, 0, 1, 0};
int dx[] = {0, 1, 0, -1};
void dfs(int y, int x, vector<pair<int, int>> &v){
for(int i = 0; i < 4; i++){
int ny = y + dy[i];
int nx = x + dx[i];
if(ny < 0 || ny >= n || nx < 0 || nx >= n || visited[ny][nx]) continue;
if(abs(a[y][x] - a[ny][nx]) >= l && abs(a[y][x] - a[ny][nx]) <= r){
sum += a[ny][nx];
visited[ny][nx] = 1;
v.push_back({ny, nx});
dfs(ny, nx, v);
}
}
}
int main(){
cin >> n >> r >> l;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin >> a[i][j];
}
}
while(true){
fill(&visited[0][0], &visited[0][0] + 51 * 51, 0);
bool isEnd = true;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(!visited[i][j]){
v.clear();
visited[i][j] = 1;
v.push_back({i, j});
sum = a[i][j];
dfs(i, j, v);
if(v.size() == 1) continue;
for(auto b : v){
a[b.first][b.second] = sum / v.size();
isEnd = false;
}
}
}
}
if(isEnd) break;
cnt++;
}
cout << cnt << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCByLCBsLCB2aXNpdGVkWzUxXVs1MV0sIGFbNTFdWzUxXSwgY250LCBzdW07CnZlY3RvcjxwYWlyPGludCwgaW50Pj4gdjsKaW50IGR5W10gPSB7LTEsIDAsIDEsIDB9OwppbnQgZHhbXSA9IHswLCAxLCAwLCAtMX07Cgp2b2lkIGRmcyhpbnQgeSwgaW50IHgsIHZlY3RvcjxwYWlyPGludCwgaW50Pj4gJnYpewogICAgZm9yKGludCBpID0gMDsgaSA8IDQ7IGkrKyl7CiAgICAgICAgaW50IG55ID0geSArIGR5W2ldOwogICAgICAgIGludCBueCA9IHggKyBkeFtpXTsKICAgICAgICBpZihueSA8IDAgfHwgbnkgPj0gbiB8fCBueCA8IDAgfHwgbnggPj0gbiB8fCB2aXNpdGVkW255XVtueF0pIGNvbnRpbnVlOwogICAgICAgIGlmKGFicyhhW3ldW3hdIC0gYVtueV1bbnhdKSA+PSBsICYmIGFicyhhW3ldW3hdIC0gYVtueV1bbnhdKSA8PSByKXsKICAgICAgICAgICAgc3VtICs9IGFbbnldW254XTsKICAgICAgICAgICAgdmlzaXRlZFtueV1bbnhdID0gMTsKICAgICAgICAgICAgdi5wdXNoX2JhY2soe255LCBueH0pOwogICAgICAgICAgICBkZnMobnksIG54LCB2KTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBjaW4gPj4gbiA+PiByID4+IGw7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKXsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgfQogICAgfQogICAgCiAgICB3aGlsZSh0cnVlKXsKICAgICAgICBmaWxsKCZ2aXNpdGVkWzBdWzBdLCAmdmlzaXRlZFswXVswXSArIDUxICogNTEsIDApOwogICAgICAgIGJvb2wgaXNFbmQgPSB0cnVlOwogICAgICAgIAogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKXsKICAgICAgICAgICAgICAgIGlmKCF2aXNpdGVkW2ldW2pdKXsKICAgICAgICAgICAgICAgICAgICB2LmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFtpXVtqXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgdi5wdXNoX2JhY2soe2ksIGp9KTsKICAgICAgICAgICAgICAgICAgICBzdW0gPSBhW2ldW2pdOwogICAgICAgICAgICAgICAgICAgIGRmcyhpLCBqLCB2KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZih2LnNpemUoKSA9PSAxKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBmb3IoYXV0byBiIDogdil7CiAgICAgICAgICAgICAgICAgICAgICAgIGFbYi5maXJzdF1bYi5zZWNvbmRdID0gc3VtIC8gdi5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzRW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKGlzRW5kKSBicmVhazsKICAgICAgICBjbnQrKzsKICAgIH0KICAgIGNvdXQgPDwgY250IDw8ICdcbic7Cn0=