#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:512000000")
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline string tostr(const T& x) {
  stringstream ss;
  ss << x;
  return ss.str();
}
const double EPS = 1e-6;
const int INF = 1000 * 1000 * 1000;
const char CINF = 102;
const long long LINF = INF * 1ll * INF;
const long double PI = 3.1415926535897932384626433832795;
int src[1100000];
int res[1100000];
int st[1100000];
int main() {
  int n;
  while (cin >> n) {
    for (int i = 0; i < (n); ++i) {
      scanf("%d", src + i);
    }
    int m;
    cin >> m;
    for (int i = 0; i < (m); ++i) {
      int a;
      scanf("%d", &a);
      --a;
      src[a] *= -1;
    }
    reverse(src, src + n);
    int p = 0;
    bool ok = true;
    for (int i = 0; i < (n); ++i) {
      int v = src[i];
      if (v > 0 && (!p || st[p - 1] != v)) v = -v;
      res[i] = v;
      if (v > 0)
        --p;
      else
        st[p++] = -v;
    }
    if (p) ok = false;
    if (!ok) {
      cout << "NO" << '\n';
      continue;
    }
    reverse(res, res + n);
    cout << "YES\n";
    for (int i = 0; i < (n); ++i) {
      printf("%d ", res[i]);
    }
    cout << endl;
  }
  return 0;
}
