#include <bits/stdc++.h>
using namespace std;
#define _GLIBCXX_DEBUG
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define ll long long
#define P pair<ll,ll>
#define all(v) (v).begin(),(v).end()

const ll mod = 1e9+7;
const ll INF = 1e18;
const double pi = acos(-1);


int main(void)
{
    ll a,b,m,ans;
    cin>>a>>b>>m;
    vector<ll> A(a),B(b);
    rep(i,a) cin>>A[i];
    rep(i,b) cin>>B[i];

    ll minia=*min_element(all(A)),minib=*min_element(all(B));
    ans=minia+minib;
    rep(i,m){
        ll x,y,c;
        cin>>x>>y>>c;
        ans = min(ans, A[x-1]+B[y-1]-c);
    }
    
    cout<<ans<<endl;
    return 0;
}
#include <algorithm>
#include <functional>
#include <iostream>
#include <numeric>
#include <queue>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

using ll = long long;
using ull = unsigned long long;

using vll = vector<ll>;

void solve();

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);

  solve();

  return 0;
}

#define ini(...)   \
  int __VA_ARGS__; \
  in(__VA_ARGS__)

#define inl(...)  \
  ll __VA_ARGS__; \
  in(__VA_ARGS__)

#define ins(...)      \
  string __VA_ARGS__; \
  in(__VA_ARGS__);

void in() {}
template <typename T, class... U>
void in(T& t, U&... u) {
  cin >> t;
  in(u...);
}

void out() {
  cout << endl;
}
template <typename T, class... U>
void out(const T& t, const U&... u) {
  cout << t;
  if (sizeof...(u))
    cout << " ";
  out(u...);
}

#define rep(i, n) for (long long i = 0; i < n; i++)

void solve();
#ifndef ONLINE_JUDGE
#include "./lib.hpp"
#endif

void solve() {
    inl(N, A, B);
    vll X(N);
    rep(i, N) cin >> X[i];

    ll ret = 0;
    rep(i, N - 1)
        ret += min(A * (X[i + 1] - X[i]), B);
    out(ret);
}
