fun max (a:Int,b:Int):Int{
    return if(a>b) a else b
}
fun min (a:Int,b:Int):Int{
    return if(a<b) a else b
}
fun main(args: Array<String>) {
    var (N,X,Y) = readLine()!!.split(" ").map { it.toInt() }
    val c = Y-X +1
    val a = X-1
    val b = N-Y

    for (i in 1 until N) {
        var result = 0
        //円の中
        if(i*2==c)result+=i
        else if(i<=c/2)result+=c
        //円の外から外
        result += max(a+b+2-i,0)
        if(i==1)result-=1
        //円の外から中
        var low=max(-(c/2),1-i)
        var up=min(-1,a-i)
        var t = max(up-low+1,0)*2
        if(c%2==0 && t>0 && c/2<i)t-=1
        if(a+1>=i && i>=2)t-=1
        result+=t

        up=min(-1,b-i)
        t = max(up-low+1,0)*2
        if(c%2==0 && t>0 && c/2<i)t-=1
        if(b+1>=i&& i>=2)t-=1
        result+=t
        println(result)
    }
}
