import           Control.Monad
import qualified Data.ByteString.Char8       as BS
import           Data.Maybe
import qualified Data.Vector.Unboxed         as V
import qualified Data.Vector.Unboxed.Mutable as VM

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine

main = do
  [n, x, y] <- getIntList

  h <- VM.new n
  VM.set h (0::Int)

  d <- VM.new (n+1)

  let inf = 10^9 :: Int
      dfs i dist = do
        d_old <- VM.read d i
        if dist > d_old
          then return ()
          else do VM.write d i (min d_old dist)
                  when (i < n) $ dfs (i+1) (dist+1)
                  when (i > 0) $ dfs (i-1) (dist+1)
                  when (i == x) $ dfs y (dist+1)
                  when (i == y) $ dfs x (dist+1)

  forM_ [1..n] $ \i -> do
    VM.set d inf
    dfs i 0
    forM_ [1..n] $ \j -> do
      dist <- VM.read d j
      hh <- VM.read h dist
      VM.write h dist (hh+1)

  forM_ [1..(n-1)] $ \i -> do hh <- VM.read h i
                              print $ hh `div` 2