#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ai = int[302333];
using al = ll[302333];
bool bridge[302333];
ai w, c, v, comp, cnt, fup, tin, v1, v2;
al sum, dp, ans;
vector<pair<int, int> > g[302333], g2[302333];
int n, m, k, T;
int tarjan(int x, int e) {
  tin[x] = T++;
  fup[x] = tin[x];
  for (auto p : g[x]) {
    int y = p.first;
    int i = p.second;
    if (i == e) continue;
    if (tin[y] != -1)
      fup[x] = min(fup[x], tin[y]);
    else {
      fup[x] = min(fup[x], tarjan(y, i));
      if (fup[y] > tin[x]) bridge[i] = true;
    }
  }
  return fup[x];
}
void dfs1(int x, int cc) {
  if (comp[x] != -1) return;
  comp[x] = cc;
  cnt[cc] += v[x];
  sum[cc] += c[x];
  for (auto y : g[x])
    if (!bridge[y.second]) dfs1(y.first, cc);
}
void go(int x, int y, int m, int weight) {
  ll add_dp = dp[y];
  if (cnt[y] > 0 && cnt[y] < k) add_dp = max(0ll, add_dp - weight);
  cnt[x] += m * cnt[y];
  dp[x] += m * add_dp;
}
void dfs2(int x, int p) {
  dp[x] = sum[x];
  for (auto e : g2[x]) {
    int i = e.second;
    int y = e.first;
    if (y == p) continue;
    dfs2(y, x);
    go(x, y, 1, w[i]);
  }
}
void dfs3(int x, int p) {
  ans[x] = dp[x];
  for (auto e : g2[x]) {
    int i = e.second;
    int y = e.first;
    if (y == p) continue;
    go(x, y, -1, w[i]);
    go(y, x, 1, w[i]);
    dfs3(y, x);
    go(y, x, -1, w[i]);
    go(x, y, 1, w[i]);
  }
}
int main() {
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 0, x; i < k; ++i) scanf("%d", &x), v[--x] = 1;
  for (int i = 0; i < n; ++i) scanf("%d", c + i);
  for (int i = 0; i < m; ++i) scanf("%d", w + i);
  for (int i = 0; i < m; ++i) {
    scanf("%d %d", v1 + i, v2 + i);
    --v1[i], --v2[i];
    g[v1[i]].emplace_back(v2[i], i), g[v2[i]].emplace_back(v1[i], i);
  }
  for (int i = 0; i < n; ++i) tin[i] = -1, comp[i] = -1;
  tarjan(0, -1);
  int cc = 0;
  for (int i = 0; i < n; ++i)
    if (comp[i] == -1) dfs1(i, cc++);
  for (int i = 0; i < m; ++i)
    if (bridge[i])
      g2[comp[v1[i]]].push_back(make_pair(comp[v2[i]], i)),
          g2[comp[v2[i]]].push_back(make_pair(comp[v1[i]], i));
  dfs2(0, 0);
  dfs3(0, 0);
  for (int i = 0; i < n; ++i) printf("%lld%c", ans[comp[i]], " \n"[i == n - 1]);
}
