#include<iostream>
#include<stack>
#include<cstring>
using namespace std;
stack<long long> shu;
stack<char> fu;
char s[260];
int yun(){
if(shu.size()<2 || fu.size()<1) return 0;
long long a,b;
char f=fu.top();
fu.pop();
a=shu.top();
shu.pop();
b=shu.top();
shu.pop();
switch(f){
case '+':shu.push(b+a);break;
case '-':shu.push(b-a);break;
case '*':shu.push(b*a);break;
case '/':shu.push(b/a);break;
default :return 0;
}
return 1;
}
int quan(char p){
if(p=='+'||p=='-')return 1;
if(p=='*'||p=='/')return 2;
return 0;
}
int main() {
cin>>s;
long long ts=0,zs=0;
int flag=1;
for(int i=0;i<=strlen(s);++i){
if(s[i]>=48&&s[i]<=57)ts=ts*10+(s[i]-'0') , zs=1;
else{
if(zs==1) shu.push(ts),ts=0,zs=0;
if(s[i]=='@')break;
if(s[i]=='('){
fu.push(s[i]);
continue;
}else if(s[i]==')'){
while(!fu.empty()&&fu.top()!='('&&flag) flag=yun();
if(!fu.empty())fu.pop(); continue;
}
while(!fu.empty()&&quan(fu.top())>=quan(s[i])&&flag)flag=yun();
fu.push(s[i]);
}
}
while(!fu.empty() &&flag)flag=yun();
if(flag)cout<<shu.top();
else cout<<"NO";
return 0;
}