text: #include<bits/stdc++.h> 
  using namespace std; 
    
  int prec(char c) 
  { 
      if(c == '^') 
      return 3; 
      else if(c == '*' || c == '/') 
      return 2; 
      else if(c == '+' || c == '-') 
      return 1; 
      else
      return -1; 
  } 
    
  void infixToPostfix(string s) 
  { 
      std::stack<char> st; 
      st.push('N'); 
      int l = s.length(); 
      string ns; 
      for(int i = 0; i < l; i++) 
      { 
          if((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z')||s[i]>='1'&&s[i]<='9') 
          ns+=s[i]; 
    
          else if(s[i] == '(') 
            
          st.push('('); 
            
          else if(s[i] == ')') 
          { 
              while(st.top() != 'N' && st.top() != '(') 
              { 
                  char c = st.top(); 
                  st.pop(); 
                 ns += c; 
              } 
              if(st.top() == '(') 
              { 
                  char c = st.top(); 
                  st.pop(); 
              } 
          } 
            
          else{ 
              while(st.top() != 'N' && prec(s[i]) <= prec(st.top())) 
              { 
                  char c = st.top(); 
                  st.pop(); 
                  ns += c; 
              } 
              st.push(s[i]); 
          } 
    
      } 
      while(st.top() != 'N') 
      { 
          char c = st.top(); 
          st.pop(); 
          ns += c; 
      } 
        
      cout << ns << endl; 
    
  } 
    
  int main() 
  { 
      string exp = "1+2*(3^4-5)^(6+7*8)-9"; 
      infixToPostfix(exp); 
      return 0; 
  } 