#include <iostream>
#include <vector>
using namespace std;

int main() {
	char str[100]; //строку меням на массив символов
	vector<char> stack; // строку меняем на вектор символов
	char word, word_last;
	int n=0, i=0; // переменные для помещения элементов в массив и пошаговой распечатки
	while(cin>>word){   
		if((word>=48)&&(word<=57)){ //если символ это число
			if((word_last>=48)&&(word_last<=57)){ // Проверка, я вляется ли предыдущий символ - числом
				str[n++]=word; //Если да , то просто добавляем его, тем самым не разрушая число
			}
			else{
				str[n++]=' '; // В противном  случае добавляем пробел и добавляем символ в главную строку
				str[n++]=word;
				}
			}
			
		if(((word>=42)&&(word<=47))||(word==94)){ //если символ это операнд
			if(word=='*'){  //Замена умножения
				word='.';
				}
			if(word=='-'){ //Замена минуса
				word=',';
				}
			if(stack.empty()){ //  Если стэк пустой - то просто кладем символ в стэк
				stack.push_back(word);
				}
			else{	 // Если стэк не пуст
				if((stack.back()>=word)||(stack.back()==word-1)||(stack.back()==word+1)){ 
					while((stack.back()>=word)||(stack.back()==word-1)||(stack.back()==word+1)){ 
						str[n++]=' ';			// Если  верхний элемент стэка имеет больший приоритет 					
						str[n++]=stack.back();	//выталкиваем все элементы из стэка							
						stack.pop_back();    	//lо тех пор, пока приоритет верхнего элемента не будет
					}							//ниже входящего символа
					stack.push_back(word);
				}
				else{ // если же верхний элемент ниже приоритетом - то просто кладем символ в стэк
					stack.push_back(word);
				}
			}
		}
		
		if(word=='('){ //Если символ - открывающая скобка
			stack.push_back(word);  //добавляем ее в стэк
		}
		
		if(word==')'){    //Если встречающийся симвлл - закрывающая скобка
			while(stack.back()!='('){ // пока в стэке не встретится открывающая скобка 
				str[n++]=' ';        // выталкиваем в главную строку  все символы
				str[n++]=stack.back();
				stack.pop_back();
			}
		 stack.pop_back(); //Удаляем открывающую скобку из стека
		}
		
	word_last=word; //Присваеваем значение текущего символа для проверки в последующем цикле
	
		//cout << "Numb:" << i++ << endl; // Распечатка пошаговых действий
		//cout << "Word:  |" << word << endl;
	}
	while(!stack.empty()){ //При окончании строки выталкиваем все символы из стека
		str[n++]=' ';
		str[n++]=stack.back();
		stack.pop_back();
}
	str[n]='\0';
	for( int i=0; str[i]!='\0';i++){ // Проходим циклом финальную строку для возврата требуемых символов
		if(str[i]=='.')
			str[i]='*';
		if(str[i]==',')
			str[i]='-';
		}
		
	cout <<"ИТОГ:     ___  " <<  endl;
	for(int i=0; str[i]!='\0'; i++){
		cout << str[i];
	}
	cout << endl;
	return 0;
}