#include <bits/stdc++.h>
using namespace std;

#define INF 1e9
#define LLINF 1e18
#define pi 3.14159265358979323
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
typedef long long ll;

int gcd(int a, int b) {
    if(a % b == 0) {
        return b;
    }
    else {
        return(gcd(b, a % b));
    }
}


int main() {
    int a, b, m;
    cin >> a >> b >> m;
    vector<int> veca(a);
    vector<int> vecb(b);
    int minia = INF;
    int minib = INF;
    rep(i, a) {
        cin >> veca.at(i);
        minia = min(minia, veca.at(i));
    }
    rep(i, b) {
        cin >> vecb.at(i);
        minib = min(minib, vecb.at(i));
    }
    int mini = minia + minib;
    int dismini = INF;
    vector<vector<int> > dis(m, vector<int> (3));
    rep(i, m) {
        rep(j, 3) {
            cin >> dis.at(i).at(j);
        }
        dismini = min(dismini, veca.at(dis.at(i).at(0) - 1) + vecb.at(dis.at(i).at(1) - 1) - dis.at(i).at(2));
    }
    cout << min(dismini, mini) << endl;
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
void read(int &x)
{
    int f=1;
    x=0;
    char s=getchar();
    while(s<'0'||s>'9')
    {
        if(s=='-')
            f=-1;
        s=getchar();
    }
    while(s>='0'&&s<='9')
    {
        x=x*10+s-'0';
        s=getchar();
    }
    x*=f;
}
#define N 100005
int n,m,t;
int a[N],b[N];
int main(){
    cin>>n>>m>>t;
    for (int i = 1; i <= n; i++)
    {
        cin>>a[i];
    }
    for (int i = 1; i <= m; i++)
    {
        cin>>b[i];
    }
    int ans=1e9;
    for (int i = 0; i < t; i++)
    {
        int x,y,c;
        cin>>x>>y>>c;
        ans= min(a[x]+b[y]-c,ans);
    }
    sort(a+1,a+n+1);
    sort(b+1,b+m+1);
    cout<<min(ans,a[1]+b[1]);
    
    
    return 0;
}