n, m, k = map(int, input().split())
a = list(map(int, input().split()))
h = list(map(int, input().split()))
tmp = [[] for i in range(n)]
for i in range(m):
start, end, dis = map(int, input().split())
tmp[start - 1].append((end, dis))
tmp[end - 1].append((start, dis))
def dfs(i, k, tmp):
if h[i - 1] > k:
return 0
elif h[i - 1] == k:
return a[i - 1]
else:
value = 0
for next in tmp[i - 1]:
if next == []:
continue
temp = a[i - 1]
a[i - 1] = 0
value = max(dfs(next[0], k - h[i - 1] - next[1], tmp) + temp, value)
a[i - 1] = temp
return value
value = 0
for i in range(1, n + 1):
value = max(dfs(i, k, tmp), value)
print(value)