// fahadmd16(IIEST Shibpur)

#include<bits/stdc++.h>
#include <algorithm>
using namespace std;

#define ll                          long long
#define pb                          push_back
#define pf                          push_front
#define eb                          emplace_back
#define mp                          make_pair
#define ff                          first
#define ss                          second
#define db                          double
#define pll                         pair<ll, ll>
#define ALL(a)                      (a).begin(),(a).end()
#define endl                        "\n"

#define forn(i, n) for (ll i = 0; i < n; i++)
#define forn1(i, n) for (ll i = 1; i < n; i++)
#define ford(i, n) for (ll i = n - 1; i >= 0; i--)
#define forab(i, a, b) for(ll i = a; i < b; i++)
#define eps 1e-10

#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)


#define IOS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)

#define trace1(x)                cout<<#x<<": "<<x<<endl
#define trace2(x, y)             cout<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
#define trace3(x, y, z)          cout<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
#define trace4(a, b, c, d)       cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
#define trace5(a, b, c, d, e)    cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
#define trace6(a, b, c, d, e, f) cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl
#define trace(v) for(auto it=v.begin();it!=v.end();it++)cout<<*it<<" ";cout<<endl;


const ll sz = 2e3 + 2;
const ll mod = 1e9 + 7;

typedef vector<ll> VL;
typedef vector<pll > VLL;
typedef vector<vector<ll> > VVL;

ll power(ll n, ll k, ll m) {
    ll ans = 1;
    while (k) {
        if (k & 1)ans = (ans * n) % m;
        k /= 2;
        n = (n * n) % m;
    }
    return ans;
}

VL adj[sz];

void solver() {
    ll n, x, y; cin >> n >> x >> y;

    forn1(i, n) {
        adj[i].pb(i + 1);
        adj[i + 1].pb(i);
    }


    adj[x].pb(y);
    adj[y].pb(x);

    // forn1(v, n + 1) {
    //     cout << v << " : ";
    //     for (auto w : adj[v])cout << w << " "; cout << endl;
    // }

    VL ans(n, 0);
    forn1(i, n + 1) {
        queue<ll> q;
        vector<bool> vis(n + 1);
        VL disTo(n + 1);
        q.push(i);
        vis[i] = 1;
        disTo[i] = 0;

        while (!q.empty()) {
            ll v = q.front();
            q.pop();
            for (auto w : adj[v]) {
                if (!vis[w]) {
                    vis[w] = 1;
                    disTo[w] = disTo[v] + 1;
                    q.push(w);
                }
            }
        }
        // trace1(i);
        forn1(j, n + 1) {
            // trace1(disTo[j]);
            ans[disTo[j]]++;
        }
    }

    forn1(i, n) {
        cout << ans[i] / 2 << endl;
    }


}


int main() {
//#ifndef ONLINE_JUDGE
//    freopen("input.txt", "r", stdin);
//    freopen("output.txt", "w", stdout);
//#endif
    IOS;
    ll T = 1; //cin >> T;
    while (T--) {
        clock_t z = clock();
        solver();
        debug("Total Time: %.3f\n", (double)(clock() - z) / CLOCKS_PER_SEC);
    }
    return 0;
}


Measured memory_bytes: 384