#include<bits/stdc++.h>
using namespace std;
string s;
struct node{
int next;
int val;
int last;
}a[1005];
int cheak(int n){
if(a[n].val>1)return 1;
if(a[1].val>1&&a[1].val!=4)return 1;
if(n==1&&a[1].val<=1)return 0;
if(n==1&&a[1].val>1)return 1;
if((a[1].val>1||a[n].val>1)&&a[1].val!=4&&a[n].val!=4)return 1;
if(a[n].val==4)return 2;
if(a[1].val<=1&&a[2].val<=1)return 1;
if(a[n].val<=1&&a[n-1].val<=1)return 1;
for(int i=1;i<=n;i++){
if(a[i-1].val!=4&&a[i+1].val!=4&&a[i].val!=4&&a[i].val>1&&(a[i-1].val>1||a[i+1].val>1))return 3;
if(a[i].val<=1&&(a[i-1].val<=1||a[i+1].val<=1)&&i!=1&&i!=n)return 4;
if(a[i].val==4&&a[i+1].val>1&&a[i+1].val<4)return 5;
if(a[i].val==4&&a[i-1].val<=1&&a[i+1].val<=1&&i!=1&&1!=n)return 1;
}
return 0;
}
int main(){
int n=0;
while(cin>>s){
if(s=="true"){
a[++n].val=1;
a[n-1].next=n;
a[n].last=n-1;
}
if(s=="false"){
a[++n].val=0;
a[n-1].next=n;
a[n].last=n-1;
}
if(s=="or"){
a[++n].val=2;
a[n-1].next=n;
a[n].last=n-1;
}
if(s=="and"){
a[++n].val=3;
a[n-1].next=n;
a[n].last=n-1;
}
if(s=="not"){
a[++n].val=4;
a[n-1].next=n;
a[n].last=n-1;
}
}
if(cheak(n)){
cout<<"error";
return 0;
}
for(int i=1;i<=n;i++){
if(a[i].val==4){
int ans=0;
while(a[i].val==4){
ans++;
a[a[i].last].next=a[i].next;
a[a[i].next].last=a[i].last;
a[i].val=-1;
i=a[i].next;
}
if(ans%2==1){
if(a[i].val==1)a[i].val=0;
else
a[i].val=1;
}
}
}
for(int i=1;i<=n;i++){
if(a[i].val==3){
a[i].val=(a[a[i].last].val&&a[a[i].next].val);
a[a[a[i].last].last].next=i;
a[a[a[i].next].next].last=i;
a[a[i].next].val=-1;
a[a[i].last].val=-1;
}
}
for(int i=1;i<=n;i++){
if(a[i].val==2){
a[i].val=(a[a[i].last].val||a[a[i].next].val);
a[a[a[i].last].last].next=i;
a[a[a[i].next].next].last=i;
a[a[i].next].val=-1;
a[a[i].last].val=-1;
}
}
for(int i=1;i<=n;i++){
if(a[i].val!=-1){
if(a[i].val)
cout<<"true";
else
cout<<"false";
}
}
return 0;
}