{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiWayIf #-}

import Control.Applicative
import Data.List
import Data.Ratio
import Control.Monad
import Control.Monad.ST
import Data.Maybe
import Data.Array.ST
import Data.Array

main = do
  [n,a,b] <- map read . words <$> getLine :: IO [Int]

  if (a+b > n+1 || a*b < n) then
    print (-1)

    else do
    let list = [n-a+1..n] ++ (concat . reverse $ slice (ceiling $ (n-a) % (b-1)) [1..n-a])
    putStrLn $ unwords . map show $ list

slice _ [] = []
slice n xs = let (a,b) = splitAt n xs in a : slice n b
