#include<iostream>
#include<string>
#include<stack>
#include<cctype>
using namespace std;
const int N(10000);
stack<int> data;
stack<char> opr;
string s;
int ans(0);
int cal()  //数据栈出两数据,符号栈出运算符号,进行相应运算
{
    int x,y;
    char ch;
    x=data.top();  data.pop();
    y=data.top();  data.pop();
    ch=opr.top();  opr.pop();
    switch (ch)
    {
        case '+': data.push((x%N+y%N)%N);  break;
        case '*': data.push((x%N)*(y%N)%N);     break;
    }
}
void solve()
{
    int x,len(s.size());
    x=0;
    for (int i=0;i<len;)
    {
        if (isdigit(s[i]))
        {
            while (i<len&&isdigit(s[i]))        
                x=x*10+(int)s[i++]-48;                
            data.push(x%N);
            x=0;
        }
        else        
            switch (s[i++])
            {
                case '+': while (!opr.empty()) cal();
                          opr.push('+');
                          break;
                case '*': while (!opr.empty()&&opr.top()=='*') cal();
                          opr.push('*'); 
                          break;    
            }        
    }
    while (!opr.empty()) cal();
}        
int main()
{
    //ifstream cin("expr.in");
    //ofstream cout("expr.out");    
    cin>>s;
    solve();
    cout<<data.top()<<endl;
    return 0;
}

/**************************************************************
	Problem: 2321
	User: admin
	Language: C++
	Result: Accepted
	Time:81 ms
	Memory:3604 kb
****************************************************************/