#include <cstdio>
#include <iostream>
#include <cmath>
#include <ctype.h>
#include <string> 
#include <sstream>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <map>
#include <queue>
#include <utility>
#include <vector>
#include <set>
#include <list>
#include <cstring>
#include <stack>
   
using namespace std;

int main()
{
    string s;
    while(1){
        cin >> s;
        if(s == "#") break;
        char en[12] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'};
        bool ok = true;
        map<char, char> chara;
        chara['1'] = '1';
        chara['0'] = '0';
        chara['T'] = '1';
        chara['F'] = '0';
        chara['('] = '(';
        chara['='] = '=';
        chara['*'] = '*';
        chara['+'] = '+';
        chara['-'] = '-';
        chara['>'] = '>';
        for(int i = 0; i < (1 << 11); i++){
            int nowi = i;
            for(int j = 10; j >= 0; j--){
                chara[en[j]] = (nowi / (int)pow(2, j)) + '0';
                nowi = nowi % (int)pow(2, j);
                // cout << chara[en[j]];
            }
            // cout << endl;
            stack<char> st;
            for(int j = 0; j < s.length(); j++){
                if(s[j] == ')'){
                    char y = st.top();
                    // cout <<"y:" << y << endl;
                    st.pop();
                    while(st.top() == '-'){
                        st.pop();
                        if(y == '0') y = '1';
                        else y = '0';
                    }
                    char op = st.top();
                    // cout << "op:" << op << endl;
                    if(op == '>') st.pop();
                    st.pop();
                    char x = st.top();
                    // cout << "x:" << x << endl;
                    st.pop();
                    while(st.top() == '-'){
                        st.pop();
                        if(x == '0') x = '1';
                        else x = '0';
                    }
                    // cout << "hey " << st.top() << endl;
                    st.pop();
                    // cout << x << " " << op << " " << y << endl;
                    if(op == '*'){
                        if(x == '1' && y == '1') st.push('1');
                        else st.push('0');
                    } else if(op == '+'){
                        if(x == '0' && y == '0') st.push('0');
                        else st.push('1');
                    } else if(op == '>'){
                        if(x == '1' && y == '0') st.push('0');
                        else st.push('1');
                    }
                } else {
                    // cout << chara[s[j]] << endl;
                    st.push(chara[s[j]]);
                }
            }
            char e2 = st.top();
            st.pop();
            while(st.top() == '-'){
                st.pop();
                if(e2 == '1') e2 = '0';
                else e2 = '1';
            }
            // cout << st.top() << endl;
            st.pop();
            char e1 = st.top();
            st.pop();
            while(!st.empty()){
                st.pop();
                if(e1 == '1') e1 = '0';
                else e1 = '1';
            }
            // cout << st.size() << endl;
            if(e1 != e2){
                ok = false;
                break;
            }
        }
        if(ok) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}

Measured memory_bytes: 1228