import java.io.PrintWriter
import java.util.ArrayDeque

data class State(val pos: Int, val cost: Int)

fun main(args: Array<String>) {
    val pw = PrintWriter(System.out)

    val (n, x, y) = readInputLine().split(" ").map { it.toInt() }

    val cost = Array(n) { IntArray(n) { Int.MAX_VALUE } }

    repeat(n) {
        cost[it][it] = 0
    }

    for (i in 0 until n) {
        val queue = ArrayDeque<State>()

        queue.add(State(i, 0))

        while (queue.isNotEmpty()) {
            val state = queue.poll()!!

            if (state.pos > 0 && cost[i][state.pos - 1] > state.cost + 1) {
                cost[i][state.pos - 1] = state.cost + 1
                queue.add(State(state.pos - 1, state.cost + 1))
            }
            if (state.pos < n - 1 && cost[i][state.pos + 1] > state.cost + 1) {
                cost[i][state.pos + 1] = state.cost + 1
                queue.add(State(state.pos + 1, state.cost + 1))
            }
            if (x - 1 == state.pos && cost[i][y - 1] > state.cost + 1) {
                cost[i][y - 1] = state.cost + 1
                queue.add(State(y - 1, state.cost + 1))
            }
            if (y - 1 == state.pos && cost[i][x - 1] > state.cost + 1) {
                cost[i][x - 1] = state.cost + 1
                queue.add(State(x - 1, state.cost + 1))
            }
        }
    }

    val cnt = IntArray(n)

    for (i in 0 until n) {
        for (j in i + 1 until n) {
            cnt[cost[i][j]]++
        }
    }

    for (i in 1 until n) {
        pw.println(cnt[i])
    }

    pw.flush()
}

fun readInputLine(): String {
    return readLine()!!
}
