#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>
#include<string.h>
#include<map>
using namespace std;
map<char,long long >M;
map<char,int>ma;
string tem;
char root[2000];
int Judge(char a)
{
if(a>='A')
return 1;
return 0;
}
void Convect(char ch[])
{
stack<char> start;
int len=strlen(ch);
int i;
int Top=0;
for(i=0; i<len; i++)
{
if(Judge(ch[i]))
{
root[Top++]=ch[i];
}
else
{
switch(ch[i])
{
case '+':
case '-':
case '/':
case '*':
while((!start.empty())&&ma[start.top()]>=ma[ch[i]])
{
root[Top++]=start.top();
start.pop();
}
start.push(ch[i]);
break;
}
}
}
while(!start.empty())
{
root[Top++]=start.top();
start.pop();
}
root[Top]=0;
}
long long sum()
{
stack<long long> end;
int len=strlen(root);
int i;
for(i=0; i<len; i++)
{
if(Judge(root[i]))
{
end.push(M[root[i]]);
}
else
{
long long num1,num2;
num1=end.top();
end.pop();
num2=end.top();
end.pop();
switch(root[i])
{
case '/':
end.push(num2/num1);
break;
case '*':
end.push(num1*num2);
break;
case '+':
end.push(num1+num2);
break;
case '-':
end.push(-num1+num2);
break;
}
}
}
return end.top();
}
int main()
{
long long ans;
char a[2000];
ma['*']=2;
ma['/']=2;
ma['+']=1;
ma['-']=1;
while(cin>>tem)
{
M.clear();
int flag=0;
memset(root,0,sizeof(root));
for(int i=0; i<tem.size()-1; i++)
{
if(tem[i]=='/'&&tem[i+1]=='0')
{
printf("impossible\n");
flag=1;
break;
}
}
if(flag)
continue;
int Len=0;
char step='A';
ans=0;
for(int i=0; i<tem.size(); i++)
{
if(tem[i]<'0'||tem[i]>'9')
{
M[step]=ans/10;
a[Len++]=step;
step++;
a[Len++]=tem[i];
ans=0;
continue;
}
ans=(ans+tem[i]-'0')*10;
}
M[step]=ans/10;
a[Len++]=step;
step++;
a[Len++]='\0';
Convect(a);
ans=sum();
printf("%lld\n",ans);
}
return 0;
}