
import qualified Data.Vector.Unboxed as U
import qualified Data.Vector as V
import qualified Data.ByteString.Char8 as C
import Data.List
import Control.Monad
import Data.Foldable
import Data.Char
import qualified Data.IntMap.Strict as IM
import qualified Data.IntSet as IS

r :: Int -> IO (U.Vector Int)
r n = U.unfoldrN n (C.readInt . C.dropWhile (==' ')) <$> C.getLine

r' :: IO [Int]
r'  =   unfoldr    (C.readInt . C.dropWhile (==' ')) <$> C.getLine


main :: IO ()
main = do
    [n,x,y] <- r'
    let v = map (f x y) [(i,j) | i<-[1..n-1], j<-[i+1..n] ]
    let mp = IM.fromListWith (+) (zip v (repeat 1))
    let mp' = foldr (\k m -> IM.insertWith (flip const) k 0 m) mp [1..n-1] 
    forM_ (IM.toAscList mp') (\(_,a)->print a)


f :: Int -> Int -> (Int,Int) -> Int
f x y (i,j) = minimum [d i j, d i x + 1 + d y j, d i y + 1 + d x j]


d i j = abs (i-j)


