import java.util.ArrayDeque
import java.util.Queue

data class Quad<F, S, T, Q>(val first: F, val second: S, val third: T, val fourth: Q)

fun solve(N: Int, range: Pair<Int,Int>): MutableMap<Int,Int> {
    val (X, Y) = Pair(range.first - 1, range.second -1 )
    val dist_map: MutableMap<Int, Int> = mutableMapOf()
    val acc = (1..N).map { (1..N).map { null as Int? }.toMutableList() }.toMutableList()
    for(i in 0 until N - 1) {
        for(j in (i + 1) until N) {
            if(i == X) {
                acc[i][j] = j - i
            }
            acc[i][j] = when(Quad(X < i, i < Y, X < j, j < Y)) {
                Quad(true, true, true, true) -> { // X <= i <= Y, X <= j <= Y
                    listOf(j - i, i - X + Y - j + 1).min()!!
                }
                Quad(true, false, true, false) , Quad(false, true, false, true) -> {
                    // i, j >= Y or i, j <= X
                    j - i
                }
                Quad(false, true, true, true) -> {
                    // i < X , X <= j <= Y
                    X - i + listOf(j - X, Y - j + 1).min()!!
                }
                Quad(true, true, true, false) -> {
                    // X <= i <= Y, j >= Y
                    listOf(Y - i, i - X + 1).min()!! + j - Y
                }
                Quad(false, true, true, false) -> {
                    // X < i, Y < j
                    X - i + 1 + j - Y
                }
                else -> null
            }
            // println("${i + 1}, ${j + 1} -> ${acc[i][j]}")
            dist_map[acc[i][j]!!] = (dist_map[acc[i][j]!!]?: 0) + 1
        }
    }
    return dist_map
}


fun main(args: Array<String>) {
    val (N, X, Y) = readLine()!!.split(" ").map(String::toInt)
    val dist_map = solve(N, Pair(X, Y))
    for(k in 1..(N - 1)) {
        println(dist_map[k]?: 0)
    }
}