module Main where

import           Debug.Trace
import qualified Data.Vector.Unboxed as VU

main :: IO [()]
main = do
    [n, vertexX, vertexY] <- map read . words <$> getLine

    let aaaList = sumShortest [((aaaa (i,j) vertexX vertexY) ) | i<-[1 .. n-1], j<-[i+1..n] ] n
    --            sumShortest [((aaaa (i,j) vertexX vertexY) - 1,1) | i<-[1 .. n-1], j<-[i+1..n] ] n

    
    mapM putStrLn (map  (\x->show (snd x))  aaaList)
    --VU.mapM_ print (trace (show aaaList) aaaList)

aaaa :: (Int,Int) -> Int -> Int -> Int
aaaa x vertexX vertexY  =  min (abs (start-vertexX) + 1 + abs (end-vertexY)) (end - start)
  where
    start    = fst x :: Int
    end      = snd x :: Int
    smaller a b = if a < b then a else b

--sumShortest :: [(Int,Int)] -> Int-> VU.Vector Int
--sumShortest shortestList n =
    --VU.accum (+) (VU.replicate (n-1) 0) shortestList

sumShortest :: [Int] -> Int-> [(Int,Int)]
sumShortest shortestList n =
    foldl (\acc y -> inc acc y) [(x,0)|x<-[1..n-1]] shortestList

    
inc ::[(Int,Int)]->Int->[(Int,Int)]
inc (x:xs) y= if (fst x)==y then (y,(snd x) + 1):xs else x: (inc xs y)