#include <iostream>
using namespace std;
struct stk
{
int n[10001], top;
stk()
{
memset(n, 0, sizeof n);
}
int pop()
{
if(top > 0)
return n[top--];
else
return 0;
}
void push(int x)
{
n[++top] = x;
}
void clr()
{
top = 0;
memset(n, 0, sizeof n);
}
}sample;
int main()
{
int x = 0;
string s;
cin >> s;
for(int i = 0; s[i] != '@'; i++)
{
if(s[i] != '.')
x = x * 10 + s[i] - '0';
if(s[i] == '.')
if(x != 0)
{
sample.push(x);
x = 0;
}
switch(s[i])
{
case '+':
x = sample.pop();
sample.n[sample.top] += x;
x = 0;break;
case '-':
x = sample.pop();
sample.n[sample.top] -= x;
x = 0;break;
case '*':
x = sample.pop();
sample.n[sample.top] *= x;
x = 0;break;
case '/':
x = sample.pop();
sample.n[sample.top] /= x;
x = 0;break;
}
}
cout << sample.n[sample.top] << endl;
return 0;
}