#include #include using namespace std;using namespace atcoder;using vst = vector;using ll = long long; using ld = long double;using pll = pair;using vll = vector;using vvll = vector; #define rep(i, n) for (ll i = 0; i < n; i++) #define repp(i,k,n) for (ll i = k; i < n; i++) #define per(i,s,e) for(ll i = s; i >= e; i--) #define all(v) v.begin(),v.end() #define no() {cout << "No" << endl; return 0;} #define yes() {cout << "Yes" << endl;return 0;} #define CHECK(a) a ? cout << "Yes" << endl : cout << "No" << endl #define UNOmap unordered_map #define UNOset unordered_set #define ASC(T) T,vector,greater templatevoid in(T&... a){(cin >> ... >> a);} templatevoid out(const T& a, const Ts&... b){cout << a;((cout << ' ' << b), ...);cout << '\n';} void vin(vll &v){for(ll i = 0; i < (ll)v.size(); i++)in(v[i]);} void vout(vll &v){for(ll i = 0; i < (ll)v.size(); i++) cout << v[i] << ' ';} ll INF = 1LL << 62;ll MODD = 998244353;ll MOD = 1000000007; // using mint = modint998244353; // using mint = modint1000000007; //using mint = modint; //---------------------------------------------- map memo; bool dfs(string s){ if(memo.count(s)) return memo[s]; if(s == "") return true; bool res = false; if(s.substr(0,2) == "wa" or s.substr(0,2) == "?a" or s.substr(0,2) == "w?"){ string t = s; t.erase(0,2); res = res or dfs(t); } if(s.substr(0,2) == "wo" or s.substr(0,2) == "?o" or s.substr(0,2) == "w?"){ string t = s; t.erase(0,2); res = res or dfs(t); } if(s[0] == 'n' or s[0] == '?'){ string t = s; t.erase(0,1); res = res or dfs(t); } memo[s] = res; return res; } int main(){ ll N; string s; in(N,s); CHECK(dfs(s)); }