#include <bits/stdc++.h>
using namespace std;
int read() {
  int x = 0, f = 1, ch = getchar();
  while (ch > '9' || ch < '0') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const int MAXN = 1000000 + 10;
struct stack {
  int a[MAXN], tp;
  int top() { return a[tp]; }
  int size() { return tp; }
  void pop() {
    if (tp) tp--;
  }
  void push(int x) { a[++tp] = x; }
} s;
int p[MAXN], b[MAXN];
int main() {
  int n = read();
  for (register int i = 1; i <= n; i++) p[i] = read();
  int m = read();
  for (register int i = 1; i <= m; i++) {
    int x = read();
    b[x] = -1;
  }
  for (register int i = n; i >= 1; i--) {
    if (b[i] == -1 || p[i] != s.top())
      s.push(p[i]), b[i] = -1;
    else
      s.pop(), b[i] = 1;
  }
  if (s.size())
    puts("NO");
  else {
    puts("YES");
    for (register int i = 1; i <= n; i++) printf("%d ", p[i] * b[i]);
  }
  return 0;
}
