#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];
            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';
}