#include <iostream>
using namespace std;
int precedence( char ) ;
struct node{
char i;
node * next;
} * ptr,* newptr,* a,* top;
class stack{
node * create_node( char data) {
ptr= new node;
ptr- > i= data;
ptr- > next= NULL ;
return ptr;
}
public :
void push( char d) ;
void pop( ) ;
bool isempty( ) ;
void display( node * np) {
while ( np! = NULL ) {
cout << np- > i;
np= np- > next;
}
cout << "\n " ;
}
} ;
void stack:: push ( char d) {
newptr= create_node( d) ;
if ( isempty( ) ) { top= newptr; }
else {
newptr- > next= top;
top= newptr;
}
}
void stack:: pop ( ) {
if ( isempty( ) ) { cout << "underflow" ; }
else {
a= top;
top= top- > next;
delete a;
}
}
bool stack:: isempty ( ) {
if ( top== NULL ) { return true ; }
else return false ;
}
int main( ) {
int size,em= 0 ;
stack s1;
cin >> size;
char vop,infix[ size] ,postfix[ size] ;
for ( int E= 0 ; E< size; E++ ) {
cin >> vop;
infix[ E] = vop;
for ( int e= 0 ; e< size; e++ ) {
if ( ( infix[ e] >= 'a' && infix[ e] <= 'z' ) || ( infix[ e] >= 'A' && infix[ e] <= 'Z' ) ) {
postfix[ em] = infix[ e] ;
em++ ;
}
else if ( infix[ e] == '(' ) {
s1.push ( infix[ e] ) ;
}
else if ( infix[ e] == ')' ) {
while ( ! s1.isempty ( ) && top- > i! = '(' ) {
postfix[ em] = top- > i;
em++ ;
s1.pop ( ) ;
}
s1.pop ( ) ;
}
else
{
while ( ! s1.isempty ( ) && top- > i! = '(' && precedence( top- > i) >= precedence( infix[ e] ) )
{
postfix[ em] = top- > i;
em++ ;
s1.pop ( ) ;
}
s1.push ( infix[ e] ) ;
}
}
while ( ! s1.isempty ( ) ) {
postfix[ em] = top- > i;
s1.pop ( ) ;
em++ ;
}
for ( int ele= 0 ; ele< size; ele++ ) {
cout << postfix[ ele] ;
}
return 0 ;
}
int precedence( char c) {
switch ( c) {
case '^' : return 5 ;
break ;
case '/' : return 4 ;
break ;
case '*' : return 4 ;
break ;
case '-' : return 3 ;
break ;
case '+' : return 3 ;
break ;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBwcmVjZWRlbmNlKGNoYXIpOwpzdHJ1Y3Qgbm9kZXsKICAgICAgICBjaGFyIGk7CiAgICAgICAgbm9kZSAqbmV4dDsKICAgIH0qcHRyLCpuZXdwdHIsKmEsKnRvcDsKY2xhc3Mgc3RhY2t7CiAgICBub2RlICpjcmVhdGVfbm9kZShjaGFyIGRhdGEpewogICAgcHRyPW5ldyBub2RlOwogICAgcHRyLT5pPWRhdGE7CiAgICBwdHItPm5leHQ9TlVMTDsKICAgIHJldHVybiBwdHI7CiAgICB9CiAgICBwdWJsaWM6CiAgICB2b2lkIHB1c2goY2hhciBkKTsKICAgIHZvaWQgcG9wKCk7CiAgICBib29sIGlzZW1wdHkoKTsKICAgIHZvaWQgZGlzcGxheShub2RlICpucCl7CiAgICAgICAgd2hpbGUobnAhPU5VTEwpewogICAgICAgICAgICBjb3V0PDxucC0+aTsKICAgICAgICAgICAgbnA9bnAtPm5leHQ7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PCJcbiI7CiAgICB9CiAgICB9OwogICAgdm9pZCBzdGFjazo6cHVzaChjaGFyIGQpewogICAgICAgIG5ld3B0cj1jcmVhdGVfbm9kZShkKTsKICAgICAgICBpZihpc2VtcHR5KCkpe3RvcD1uZXdwdHI7fQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIG5ld3B0ci0+bmV4dD10b3A7CiAgICAgICAgICAgIHRvcD1uZXdwdHI7CiAgICAgICAgfQogCiAgICB9CiAgICB2b2lkIHN0YWNrOjpwb3AoKXsKICAgICAgICAgaWYoaXNlbXB0eSgpKXtjb3V0PDwidW5kZXJmbG93Ijt9CiAgICBlbHNlewogICAgICAgIGE9dG9wOwogICAgICAgIHRvcD10b3AtPm5leHQ7CiAgICAgICAgZGVsZXRlIGE7CiAgICB9CiAgICB9CiAgICBib29sIHN0YWNrOjppc2VtcHR5KCl7CiAgICAgICAgaWYodG9wPT1OVUxMKXtyZXR1cm4gdHJ1ZTt9CiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpbnQgbWFpbigpewogICAgICAgIGludCBzaXplLGVtPTA7CiAgICAgICAgc3RhY2sgczE7CiAgICAgICAgY2luPj5zaXplOwogICAgICAgIGNoYXIgdm9wLGluZml4W3NpemVdLHBvc3RmaXhbc2l6ZV07CiAgICAgICAgZm9yKGludCBFPTA7RTxzaXplO0UrKyl7CiAgICAgICAgICAgIGNpbj4+dm9wOwogICAgICAgICAgICBpbmZpeFtFXT12b3A7CiAgICBmb3IoaW50IGU9MDtlPHNpemU7ZSsrKXsKICAgICAgICBpZigoaW5maXhbZV0+PSdhJyYmaW5maXhbZV08PSd6Jyl8fChpbmZpeFtlXT49J0EnJiZpbmZpeFtlXTw9J1onKSl7CiAgICAgICAgICAgIHBvc3RmaXhbZW1dPWluZml4W2VdOwogICAgICAgICAgICBlbSsrOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGluZml4W2VdPT0nKCcpewogICAgICAgICAgICBzMS5wdXNoKGluZml4W2VdKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihpbmZpeFtlXT09JyknKXsKICAgICAgICAgICAgd2hpbGUoIXMxLmlzZW1wdHkoKSYmdG9wLT5pIT0nKCcpewogICAgICAgICAgICAgICAgcG9zdGZpeFtlbV09dG9wLT5pOwogICAgICAgICAgICAgICAgZW0rKzsKICAgICAgICAgICAgICAgIHMxLnBvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgczEucG9wKCk7ICAgIAogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgd2hpbGUoIXMxLmlzZW1wdHkoKSYmdG9wLT5pIT0nKCcmJnByZWNlZGVuY2UodG9wLT5pKT49cHJlY2VkZW5jZShpbmZpeFtlXSkpCiAgICAgICAgICAgewogICAgICAgICAgICBwb3N0Zml4W2VtXT10b3AtPmk7CiAgICAgICAgICAgIGVtKys7CiAgICAgICAgICAgIHMxLnBvcCgpOwogICAgICAgICAgIH0KICAgICAgICAgICAgczEucHVzaChpbmZpeFtlXSk7CiAgICAgICAgfQogICAgfSAgCiAgICB3aGlsZSghczEuaXNlbXB0eSgpKXsKICAgICAgICBwb3N0Zml4W2VtXT10b3AtPmk7CiAgICAgICAgczEucG9wKCk7CiAgICAgICAgZW0rKzsKICAgIH0KZm9yKGludCBlbGU9MDtlbGU8c2l6ZTtlbGUrKyl7CiAgICBjb3V0PDxwb3N0Zml4W2VsZV07Cn0KICAgICAgIHJldHVybiAwOyAgICAgCiAgICB9ICAgIAogICAgaW50IHByZWNlZGVuY2UoY2hhciBjKXsKICAgIHN3aXRjaChjKXsKIAogICAgICAgIGNhc2UgJ14nOiByZXR1cm4gNTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnLyc6cmV0dXJuIDQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnKic6cmV0dXJuIDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSAnLSc6cmV0dXJuIDM7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICcrJzpyZXR1cm4gMzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgIH0KfQ==