#include<iostream>
#include<stack>
#include<cstring>
#include<unordered_map>
#include<algorithm>
using namespace std;
stack<unsigned long long> num;
stack<char>opt;
void eval()
{
unsigned long long b=num.top();num.pop();
unsigned long long a=num.top();num.pop();
char c=opt.top();opt.pop();
if(c=='+') num.push(a+b);
if(c=='*') num.push(a*b);
}
int main()
{
unordered_map <char,int> pr{{'+',1},{'/',2}};
string str;
cin>>str;
for(unsigned long long i=0;i<str.size();i++)
{
auto c=str[i];
if(isdigit(c)){
unsigned long long x=0,j=i;
while(j<str.size()&&isdigit(str[j])){
x=x*10+str[j++]-'0';
}
i=j-1;
num.push(x);
}
else{
while(opt.size()&&pr[opt.top()]>=pr[c]) eval();
opt.push(c);
}
}
while(opt.size()) eval();
cout<<num.top()%10000<<endl;
}