#include <bits/stdc++.h>
using namespace std;
int chh;
const int N = 1000005;
int n;
char s[N];
int dfs(int p, int &b) {
  int c, x, y, ans;
  char ch;
  b = p + 1;
  if (s[p] == '0') return 1;
  if (s[p] == '1') return 2;
  if (s[p] == '?') return 4;
  x = dfs(p + 1, c);
  ch = s[c];
  y = dfs(c + 1, b);
  b++;
  ans = 0;
  if (ch == '&') {
    if ((1 & x) || (1 & y) || ((4 & x) && (4 & y))) ans |= 1;
    if ((2 & x) && (2 & y)) ans |= 2;
    if (((4 & x) && (4 & y)) || ((4 & x) && (2 & y)) || ((2 & x) && (4 & y)))
      ans |= 4;
  } else if (ch == '|') {
    if ((1 & x) && (1 & y)) ans |= 1;
    if ((2 & x) || (2 & y) || ((4 & x) && (4 & y))) ans |= 2;
    if (((4 & x) && (4 & y)) || ((4 & x) && (1 & y)) || ((1 & x) && (4 & y)))
      ans |= 4;
  } else {
    if (((1 & x) && (1 & y)) || ((2 & x) && (2 & y)) || ((4 & x) && (4 & y)))
      ans |= 1;
    if (((1 & x) && (2 & y)) || ((2 & x) && (1 & y)) || ((4 & x) && (4 & y)))
      ans |= 2;
    if (((1 & x) && (4 & y)) || ((4 & x) && (1 & y)) || ((2 & x) && (4 & y)) ||
        ((4 & x) && (2 & y)))
      ans |= 4;
  }
  return ans;
}
int main() {
  int i, j, x, ans;
  while (~scanf("%d", &n)) {
    scanf("%s", s);
    n = strlen(s);
    ans = dfs(0, x);
    if (ans >= 4)
      puts("YES");
    else
      puts("NO");
  }
  return 0;
}
