import qualified Data.Vector.Unboxed as VU
import qualified Data.Vector.Unboxed.Mutable as VUM
import qualified Data.ByteString.Char8 as BS
import Control.Monad
import Data.List
import Data.Char

main :: IO ()
main = do
    (x,y,a,b,c) <- (\vec -> (vec VU.! 0, vec VU.! 1, vec VU.! 2, vec VU.! 3, vec VU.! 4)) . VU.unfoldrN 5 readInt <$> BS.getLine
    ps <- unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine
    qs <- unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine
    rs <- unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine
    let psU = take x $ sortBy (\j k -> compare k j) ps
    let qsU = take y $ sortBy (\j k -> compare k j) qs
    let rsU = sortBy (\j k -> compare k j) rs
    let psR = reverse psU
    let qsR = reverse qsU
    print $ fun psR qsR rsU

fun :: [Int] -> [Int] -> [Int] -> Int
fun ps qs [] = sum ps + sum qs
fun [] (q:qs) (r:rs) 
    | r > q     = r + fun [] qs rs
    | otherwise = sum (q:qs)
fun (p:ps) [] (r:rs) 
    | r > p     = r + fun ps [] rs
    | otherwise = sum (p:ps)
fun (p:ps) (q:qs) (r:rs) 
    | p <= q && r > p = r + fun ps (q:qs) rs
    | p > q  && r > q = r + fun (p:ps) qs rs
    | otherwise       = sum (p:ps) + sum (q:qs)


readInt :: BS.ByteString -> Maybe (Int,BS.ByteString)
readInt xs = do
    (x,ys) <- BS.readInt xs
    return (x,BS.tail ys)