#include <fstream>
using namespace std;
int poz;
char s[100005];
int eval();
int termen();
int factor();
int eval() /// va aduna termenii, adunarea fiind de gradul 1
{
int sol = termen();
while(s[poz] == '+' || s[poz] == '-')
if(s[poz] == '+')
{
poz++;
sol += termen();
}
else
{
poz++;
sol -= termen();
}
return sol;
}
int termen() /// continutul unui termen care poate fi la randul lui compus din factorii inmultirii
{
int sol = factor();
while(s[poz] == '*' || s[poz] == '/')
if(s[poz] == '*')
{
poz++;
sol *= factor();
}
else
{
poz++;
sol /= factor();
}
return sol;
}
int factor() /// valoarea unui singur factor (...) - factor
{
int sol = 0;
if(s[poz] == '(')
{
poz++;
sol = eval();
poz++;
}
while(s[poz] >= '0' && s[poz] <= '9')
{
sol = sol * 10 + (s[poz] - '0');
poz++;
}
return sol;
}
int main()
{
ifstream fin ("evaluare.in");
fin.getline(s, 100005);
fin.close();
ofstream fout ("evaluare.out");
fout << eval();
fout.close();
return 0;
}