#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include<stack>
using namespace std;
char s[100];
int num;
stack<string> sta;
map<string,int> mapp;
void push(string str){
if(str=="(") {
sta.push("(");
return;
}
if(str==")"){
while(sta.top()!="(") {
cout<<sta.top();
sta.pop();
}
sta.pop();
return;
}
while(!sta.empty() && mapp[str]<=mapp[sta.top()]){
if(sta.top()!="#") cout<<sta.top();
sta.pop();
}
sta.push(str);
}
int main()
{
freopen("in","r",stdin);
//freopen("out.txt","w",stdout);
while(gets(s)!=NULL){
mapp["#"]=-1;
mapp["||"]=1;
mapp["&&"]=2;
mapp["!="]=mapp["=="]=3;
mapp["<="]=mapp["<"]=mapp[">"]=mapp[">="]=4;
mapp["+"]=mapp["-"]=5;
mapp["*"]=mapp["/"]=mapp["%"]=6;
mapp["!"]=7;
mapp["("]=0;
mapp[")"]=0;
int len=strlen(s);
while(sta.size()) sta.pop();
sta.push("#");
for(int i=0;i<len;){
switch(s[i]){
case '\n':
case ' ':
case '\t':
i++;
break;
case '|':
push("||"); i+=2; break;
case '&':
push("&&"); i+=2; break;
case '!':
if(s[i+1]=='=') {push("!=");i+=2;}
else {push("!");i+=1;}
break;
case '=':
push("=="); i+=2; break;
case '>':
if(s[i+1]=='=') {push(">=");i+=2;}
else {push(">");i++;}
break;
case '<':
if(s[i+1]=='=') {push("<=");i+=2;}
else {push("<");i++;}
break;
case '+':
push("+"); i++; break;
case '-':
push("-"); i++; break;
case '*':
push("*"); i++; break;
case '/':
push("/"); i++; break;
case '%':
push("%"); i++; break;
case '(':
push("("); i++; break;
case ')':
push(")"); i++; break;
default:{
if(s[i]>='0' && s[i]<='9'){
num=0;
while(s[i]>='0' && s[i]<='9') {num=num*10+s[i]-'0';i++;}
cout<<num<<" ";
}else if(s[i]>='a' && s[i]<='z'|| s[i]>='A' && s[i]<='Z') {
cout<<s[i];
i++;
}
}
break;
}
}
push("#");
puts("");
}
return 0;
}
input
(A+B)*D-E/(F+A*D)+C
a&&b||!c||(d>=6+9)
a&&b||!c||(d>=6+9)
output
AB+D*EFAD*+/-C+
ab&&c!||d6 9 +>=||
ab&&c!||d6 9 +>=||