#include <bits/stdc++.h>
using namespace std;
template <typename T>
istream& operator>>(istream& is, vector<T>& a) {
  for (T& ai : a) is >> ai;
  return is;
}
template <typename T>
ostream& operator<<(ostream& os, vector<T> const& a) {
  os << "[ ";
  for (const T& ai : a) os << ai << " ";
  return os << "]";
}
template <typename T1, typename T2>
istream& operator>>(istream& is, pair<T1, T2>& a) {
  return is >> a.first >> a.second;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& os, pair<T1, T2> const& a) {
  return os << "(" << a.first << ", " << a.second << ")";
}
class BIT {
 public:
  BIT(int n) : _n(n), _a(n + 1) {}
  void add(int i, int v) {
    ++i;
    while (i <= _n) {
      _a[i] += v;
      i += i & -i;
    }
  }
  long long get(int i) {
    long long r = 0;
    while (i) {
      r += _a[i];
      i -= i & -i;
    }
    return r;
  }

 private:
  int _n;
  vector<long long> _a;
};
void f() {
  int n;
  cin >> n;
  vector<int> a(n), p(n);
  cin >> a >> p;
  int m;
  cin >> m;
  vector<int> b(m);
  cin >> b;
  vector<int> aa(n);
  for (int i = 0; i < n; ++i) aa[i] = i;
  sort((aa).begin(), (aa).end(),
       [&a](int i, int j) { return a[i] < a[j] || (a[i] == a[j] && i < j); });
  BIT bit(n);
  for (int i = 0; i < n; ++i) bit.add(i, p[i]);
  vector<pair<long long, int>> r = {{0LL, -1}}, rr;
  auto x = aa.begin(), y = aa.begin(), bi = b.begin();
  while (bi != b.end()) {
    if (x == aa.end() || a[*x] > *bi) {
      r.clear();
      break;
    }
    if (a[*x] < *bi) {
      ++x;
      continue;
    }
    auto ri = r.begin();
    long long s = ri->first;
    int t = ri++->second;
    while (x != aa.end() && a[*x] == *bi) {
      int i = *x++;
      if (i < t) continue;
      while (ri != r.end() && ri->second < i) {
        s += bit.get(ri->second + 1) - bit.get(t + 1);
        s = min(s, ri->first);
        t = ri++->second;
      }
      s += bit.get(i) - bit.get(t + 1);
      t = i - 1;
      rr.emplace_back(s, i);
    }
    r.swap(rr);
    rr.clear();
    if (r.empty()) break;
    while (y != aa.end() && a[*y] <= *bi) {
      int i = *y++;
      if (p[i] > 0) bit.add(i, -p[i]);
    }
    ++bi;
  }
  if (r.empty()) {
    cout << "NO\n";
    return;
  }
  cout << "YES\n";
  long long best = numeric_limits<long long>::max();
  for (const auto& ri : r) {
    best = min(best, ri.first + bit.get(n) - bit.get(ri.second + 1));
  }
  cout << best << "\n";
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  f();
  return 0;
}
