# include <stdio.h>
#include<string.h>
#include <ctype.h>
#define MAX 200

char st[MAX][MAX];
int top = -1;

int isOperator(char c){
    return c=='+' || c=='-'  || c=='*'  || c=='/'  ||  c=='^';
}
int isValidChar (char c){
    return isalnum((unsigned char)c) || isOperator (c) || c=='(' || c==')' ||  c==' ';
}

int main(){
    char expr[MAX];
    if(!fgets(expr. sizeof(expr), stdin))
       return 0;
    int n = strlen(expr);
    
    for (int i=0;i<n;i++){
        if(expr[i] == '\n') continue;
        if(!isValidChar(expr[i])){
            printf("Invalid input");
            return 0;
        }
    }
    
    for (int i=n-1;i>=0; i--){
        char c=expr[i];
        if (c == ' ' || c=='\n') continue;
        
        if(isalnum((unsigned char)c)){
            char temp[2] = {c, '\0'};
            strcpy(st[++top], temp);
        }else if (isOperator(c)){
            if (top<1){
                printf("Invalid input");
                return 0;
            }
            
            char op1[MAX],op2[MAX],res[MAX];
            strcpy(op1, st[top--]);
            strcpy(op2,st[top--]);
            snprintf(res, sizeof(res),"%s%s%c, op1,op2,c");
            strcpy(st[++top], res);
        }else if(c == '(' || c==')'){
            continue;
        }
    }
    if(top !=0){
        printf("Invalid input");
        return 0;
    }
    printf("%s", st[0]);
    return 0;
}