//Md Fahad
// CSE 18

#include<bits/stdc++.h>


using  namespace  std;

#define PI              acos(-1.0)
#define lcm(a,b)        (a * (b / __gcd(a,b)))
#define en '\n'

#define READ_IN freopen("Input.txt","r",stdin);
#define READ_OUT freopen("Output.txt","w",stdout);
#define Infi                0x3f3f3f3f

const int fx[] = {+1,-1,+0,+0};                         // 4 X directions
const int fy[] = {+0,+0,+1,-1};                         // 4 Y directions
const int fx8[] = {+0,+0,+1,-1,-1,+1,-1,+1};            // King X Moves
const int fy8[] = {-1,+1,+0,+0,+1,+1,-1,-1};            // King Y Moves
const int kx[] = {-2, -2, -1, -1,  1,  1,  2,  2};      // Knight X Moves
const int ky[] = {-1,  1, -2,  2, -2,  2, -1,  1};      // Knight Y Moves



int  Set    (int N,int pos) {return N=N | (1<<pos);}    /// turn a bit on
int  reset  (int N,int pos) {return N= N & ~(1<<pos);}  /// turn a bit off
bool check  (int N,int pos) {return (bool)(N & (1<<pos));} /// check, if a bit is on or not

void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}

template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define trace(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
#define trace(x...)
#endif


typedef long long int           ll;
typedef unsigned long long int  llu;

vector<vector<int>> graph;
vector<int> level;
vector<bool> visited;

void bfs(int sos)
{
    queue<int> track;

    track.push(sos);

    visited[sos]=true;

    while(!track.empty()){

        int ckr = track.front();
        track.pop();

        for(int i=0;i<graph[ckr].size();i++)
        {
            int val = graph[ckr][i];

            if(visited[val]==false)
            {
                level[val]=level[ckr]+1;
                        visited[val]=true;
                        track.push(val);

            }
        }

    }


}

int main(void)
{
    //READ_IN;

    int n;
    scanf("%d",&n);
    //cin >> n;
    int x,y;

    //cin >> x >> y;
    scanf("%d %d",&x,&y);

    graph.assign(n+2,vector<int>());
    level.assign(n+2,0);
    visited.assign(n+2,false);

    for(int i=1;i<n;i++){
        graph[i].push_back(i+1);
        graph[i+1].push_back(i);

    }
    graph[x].push_back(y);
    graph[y].push_back(x);


    map<int,int> mm;

    map<pair<int,int>,int> mp;

    for(int i=1;i<=n;i++){

    level.assign(n+2,0);
    visited.assign(n+2,false);

        bfs(i);

        for(int j=1;j<=n;j++){


                if(level[j]!=0){

                        if(i>j){
                            int a=i;
                            int b=j;

                            if(mp.count({a,b})==1){

                            }
                            else{
                            mp[{a,b}]=1;
                            mm[level[j]]++;

                            }
                        }
                        else{
                            int a=j;
                            int b =i;
                            if(mp.count({a,b})==1){

                            }
                            else{
                            mp[{a,b}]=1;
                            mm[level[j]]++;

                            }
                        }

                }

        }


    }

    //vector<int> nn(n);

    int cnt=0;
    for(auto it : mm ){
       // cout << it.second << endl;
        printf("%d\n",it.second);
        cnt++;
    }
    for(int i=cnt+1;i<n;i++){
            printf("%d\n",0);
        //cout << 0 << endl;
    }


    return 0;
}



Measured memory_bytes: 125440