import java.util.*

fun main(args: Array<String>) {
    val sc = Scanner(System.`in`)
    val n = sc.nextInt()
    val x = sc.nextInt()
    val y = sc.nextInt()
    // first: current node, second: start node
    var open = LinkedList<Pair<Int,Int>>((1..n).map { Pair(it, it) })
    val used = Array(n + 1) {
        val res = Array(n + 1) {false}
        res[it] = true
        res
    }

    for (k in 1 until n) {
        val nextOpen = LinkedList<Pair<Int,Int>>()
        var ans = 0
        while (open.isNotEmpty()) {
            val p = open.poll()
            val cur = p.first
            val start = p.second
            if (cur - 1 >= 1 && !used[start][cur - 1]) {
                nextOpen.add(Pair(cur - 1, start))
                used[start][cur - 1] = true
                ans++
            }
            if (cur + 1 <= n && !used[start][cur + 1]) {
                nextOpen.add(Pair(cur + 1, start))
                used[start][cur + 1] = true
                ans++
            }
            if (cur == x && !used[start][y]) {
                nextOpen.add(Pair(y, start))
                used[start][y] = true
                ans++
            }
            if (cur == y && !used[start][x]) {
                nextOpen.add(Pair(x, start))
                used[start][x] = true
                ans++
            }
        }
        println(ans / 2)
        open = nextOpen
    }
}