#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=