#include <bits/stdc++.h>
using namespace std;
const long long LLMAX = 0x7fffffffffffffffLL;
const long long LLMIN = 0x8000000000000000LL;
const int IMAX = 0x7fffffff;
const int IMIN = 0x80000000;
const double eps = 10e-7;
const int maxn = 1000000 + 10;
int n, t;
int a[maxn], nega[maxn];
int main() {
  while (~scanf("%d", &n)) {
    for (int i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
    }
    scanf("%d", &t);
    for (int i = 1; i <= t; i++) {
      int temp;
      scanf("%d", &temp);
      a[temp] = -a[temp];
    }
    if (n & 1) {
      printf("NO\n");
      continue;
    }
    stack<int> st, pos;
    for (int i = n; i >= 1; i--) {
      if (st.empty()) {
        st.push(a[i]);
        pos.push(i);
      } else {
        int L = a[i];
        int R = st.top();
        if (abs(L) == abs(R)) {
          if (L > 0 && R < 0) {
            st.pop();
            pos.pop();
          } else if (L > 0 && R > 0) {
            int temp = pos.top();
            a[temp] = -a[temp];
            st.pop();
            pos.pop();
          } else {
            st.push(L);
            pos.push(i);
          }
        } else {
          st.push(L);
          pos.push(i);
        }
      }
    }
    if (st.empty()) {
      printf("YES\n");
      for (int i = 1; i <= n; i++) {
        printf("%d%c", a[i], i == n ? '\n' : ' ');
      }
    } else
      printf("NO\n");
  }
  return 0;
}
