import qualified Data.Vector.Unboxed as VU
import qualified Data.ByteString.Char8 as BS
import Data.Maybe

main = do
  [_, _, m] <- map read . words <$> getLine
  as <- VU.fromList <$> (map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine)
  bs <- VU.fromList <$> (map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine)

  let amin = VU.minimum as
  let bmin = VU.minimum bs
  let m1 = amin + bmin

  let loop :: Int -> [Int] -> IO [Int]
      loop cnt xs
        | cnt >= m = return xs
        | otherwise = do
              [x, y, c] <- map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine
              let val = (as VU.! (x-1)) + (bs VU.! (y-1)) - c
              loop (cnt + 1) (val:xs)
  m2 <- minimum <$> loop 0 []

  print $ min m1 m2