#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define MAX 100;
char stack[MAX][MAX];
int top=-1;
void push(char*str)
{
    strcpy(stack[++top],str);
}
char*pop()
{
    return stack[top--]; 
}
int isOperation(char c)
{
    return(c=='+'||c=='-'||c=='/'||c=='*');
}
int isBalanced(char*top)
{
    int count=0;
    for(int i=0;exp[i];i++)
    {
        if(exp[i]=='(')count++;
        else if(exp[i]==')')count--;
        if(count<0)
        return 0;
    }
    return count=0;
    
}
int main()
{
    char prefix[MAX];
    scanf("%s",prefix);
    for(int i=0,prefix[i];i++)
    {
    if(!isalnum(prefix[i])&&!isOperator(prefix[i])&&prefix[i]!='('&&prefix[i]!=')')
    {
        printf("Invalid input")
        return 0;
    }
}
if(!isBalance(prefix))
{
    printf("Invalid input");
    return 0;
}
int len=strlen(prefix);
for(int i=len-1;i>=0.i++)
{
    char c=prefix[i];
    if(isalnum(c))
    {
        char op[2]={c,'\0'};
        push(op);
    }
    else if(isOPerator(c))
    {
        if(top<1)
        {
            printf("Invalid input");
            return 0;
        }
        char op1[MAX],op[MAX],result[MAX];
        strcpy(op1,pop());
        strcpy(op2,pop());
        sprintf(result,"%s%s%c",op1,op2,c);
        push(result);
    }
}
if(top!=0)
{ 
    printf("Invalid input");
    return 0;
}
printf("%s",pop());
return 0;
}