#include <iostream>
#include <fstream>
using namespace std;
int elvegez(char c, int a, int b)
{
switch(c)
{
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
}
return 0;
}
bool szamjegy(char c)
{
return c>='0'&&c<='9';
}
int kiertekel(char muvelet_sor[])
{
int i=0, szamok[50005], szi = 0, muvi = 0, szorzo = 1;
char muveletek[50005];
bool binaris = false;
while(muvelet_sor[i]!='\0')
{
if(szamjegy(muvelet_sor[i]))
{
int a=0;
while(szamjegy(muvelet_sor[i]))
{
a *= 10;
a += muvelet_sor[i]-'0';
i++;
}
szamok[szi++] = a*szorzo;
szorzo = 1;
binaris = true;
}
else if(muvelet_sor[i] == '+' || muvelet_sor[i] == '-')
{
if(binaris)
{
while(muvi && muveletek[muvi-1]!='(')
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
muveletek[muvi++] = muvelet_sor[i];
}
else
{
cout<<1/0;
if(muvelet_sor[i] == '-')
szorzo*=-1;
}
i++;
binaris = false;
}
else if(muvelet_sor[i] == '*' || muvelet_sor[i] == '/')
{
while(muvi && muveletek[muvi-1]!='(' && muveletek[muvi-1]!='+' && muveletek[muvi-1]!='-')
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
muveletek[muvi++] = muvelet_sor[i++];
binaris = false;
}
else if(muvelet_sor[i] == '(')
{
i++;
binaris = false;
muveletek[muvi++] = '(';
}
else if(muvelet_sor[i] == ')')
{
i++;
binaris = true;
while(muveletek[muvi-1] != '(')
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
muvi--;
}
else
i++;
}
while(muvi)
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
return szamok[0];
}
int main()
{
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char muvelet_sor[100005];
in.get(muvelet_sor,100005);
out << kiertekel(muvelet_sor) << '\n';
return 0;
}