import java.io._
import java.util.StringTokenizer
import scala.util.control.Breaks.{breakable,break}
import scala.collection.mutable.{Map, Stack, Queue, PriorityQueue, Set}

object Main extends App {
  val in = new InputReader(System.in)
  val pw = new PrintWriter(System.out)

  val N, X, Y = in.next().toInt

  //
  val done = new Array[Int](N+1)
  val ans = new Array[Int](N)
  val q = Queue[(Int, Int)]()

  for (i <- 1 until N) {
    q.enqueue((i, 0))
    while (!q.isEmpty) {
      val (now, cnt) = q.dequeue()

      if (now <= N) {
        if (done(now) != i) {
          done(now) = i
          if (now > i)
            ans(cnt) += 1

          if (now == X) {
            q.enqueue((Y, cnt+1))
          }
          if (now == Y) {
            q.enqueue((X, cnt+1))
          }

          if (now > 1)
            q.enqueue((now-1, cnt+1))
          q.enqueue((now+1, cnt+1))
        }
      }
    }

  }

  println(ans.drop(1).mkString("\n"))
}

class InputReader(stream: InputStream) {
  private[this] val reader = new BufferedReader(new InputStreamReader(stream))
  private[this] var tokenizer: StringTokenizer = new StringTokenizer(reader.readLine())
  def next(): String = {
    while (!tokenizer.hasMoreTokens()) {
      tokenizer = new StringTokenizer(reader.readLine())
    }
    tokenizer.nextToken()
  }
}
