#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const double EPS = 1e-9;
const int MAXN = 1000000;
int n, t;
int p[MAXN + 5], q[MAXN + 5];
bool ismin[MAXN + 5];
stack<int> stak;
int main() {
  scanf("%d", &n);
  for (int i = 1, _d = n; i <= _d; i++) scanf("%d", &p[i]);
  memset(ismin, 0, sizeof(ismin));
  scanf("%d", &t);
  while (t--) {
    int x;
    scanf("%d", &x);
    ismin[x] = 1;
  }
  for (int i = n, _d = 1; i >= _d; i--) {
    if (stak.empty()) {
      ismin[i] = 1;
      stak.push(p[i]);
      continue;
    }
    int cur = stak.top();
    if (ismin[i]) {
      stak.push(p[i]);
    } else if (p[i] == cur) {
      stak.pop();
    } else {
      ismin[i] = 1;
      stak.push(p[i]);
    }
  }
  if (!stak.empty()) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  for (int i = 1, _d = n; i <= _d; i++) {
    if (i > 1) printf(" ");
    if (ismin[i]) p[i] = -p[i];
    printf("%d", p[i]);
  }
  printf("\n");
  return 0;
}
