import qualified Data.Vector.Unboxed as V
import qualified Data.ByteString.Char8 as BS
import Data.List
import Data.Maybe

main = do
  (_, k) <- readIntPair
  ps <- readIntList
  print . sum . take k . sort $ ps

getInt :: IO Int
getInt = readLn

second :: (b -> c) -> (a, b) -> (a, c)
second f (a, b) = (a, f b)

readInt :: BS.ByteString -> Maybe (Int, BS.ByteString)
readInt = fmap (second BS.tail) . BS.readInt

readIntVec :: Int -> IO (V.Vector Int)
readIntVec n = V.unfoldrN n readInt <$> BS.getLine

readIntList :: IO [Int]
readIntList = map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine

readIntPair :: IO (Int, Int)
readIntPair = do
  v <- readIntVec 2
  return (v V.! 0, v V.! 1)
