#include <iostream>
#include <algorithm>
#define MAX_SIZE 50
using namespace std;
class InfixToPrePost{
public:
/** Initialize your data structure here. */
char a[MAX_SIZE];
int top;
InfixToPrePost() {
top = -1;
}
void push(char c){
if(top == MAX_SIZE - 1){
cout<<"Stack is full\n";
return;
}
a[++top] = c;
}
char topElement(){
return a[top];
}
char pop(){
return a[top--];
}
bool isEmpty(){
return top == -1;
}
int priority(char c){
if(c == '(')
return 0;
if(c == '+' || c== '-')
return 1;
if(c == '*' || c == '/' || c == '%')
return 2;
if(c == '^')
return 3;
return 0;
}
string convertToPostfix(string inp){
string ans = "";
for(int i = 0; i < inp.length(); ++i){
if(isalnum(inp[i])){
ans += inp[i];
}
else if(inp[i] == '('){
push('(');
}
else if(inp[i] == ')'){
char t;
while((t = pop()) != '(')
ans += t;
}
else{
while(!isEmpty() && priority(topElement()) >= priority(inp[i])){
ans += pop();
}
push(inp[i]);
}
}
while(!isEmpty()){
ans += pop();
}
return ans;
}
string convertToPrefix(string inp){
int len = inp.length();
for(int i = 0; i < len/2 + 1; ++i){
char t = (inp[i] == '(' ? ')' : (inp[i] == ')' ? '(': inp[i]));
inp[i] = (inp[len-i-1] == '(' ? ')' : (inp[len-i-1] == ')' ? '(': inp[len-i-1]));
inp[len-i-1] = t;
}
// cout<<inp<<"\n";
inp = convertToPostfix(inp);
reverse(inp.begin(), inp.end());
return inp;
}
};
int main() {
// ios::sync_with_stdio(0);
// cin.tie(0);
string inp;
cin>>inp;
InfixToPrePost obj;
cout<<"Postfix: "<<obj.convertToPostfix(inp)<<"\n";
cout<<"Prefix: "<<obj.convertToPrefix(inp)<<"\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojZGVmaW5lIE1BWF9TSVpFIDUwCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBJbmZpeFRvUHJlUG9zdHsKcHVibGljOgogICAgLyoqIEluaXRpYWxpemUgeW91ciBkYXRhIHN0cnVjdHVyZSBoZXJlLiAqLwogICAgY2hhciBhW01BWF9TSVpFXTsKCWludCB0b3A7CgkKICAgIEluZml4VG9QcmVQb3N0KCkgewogICAgICAgIHRvcCA9IC0xOwogICAgfQogICAgCgl2b2lkIHB1c2goY2hhciBjKXsKCQlpZih0b3AgPT0gTUFYX1NJWkUgLSAxKXsKCQkJY291dDw8IlN0YWNrIGlzIGZ1bGxcbiI7CgkJCXJldHVybjsKCQl9CgkJCgkJYVsrK3RvcF0gPSBjOwoJfQoJCgljaGFyIHRvcEVsZW1lbnQoKXsKCQlyZXR1cm4gYVt0b3BdOwoJfQoJCgljaGFyIHBvcCgpewoJCXJldHVybiBhW3RvcC0tXTsKCX0KCQoJYm9vbCBpc0VtcHR5KCl7CgkJcmV0dXJuIHRvcCA9PSAtMTsKCX0KCQoJaW50IHByaW9yaXR5KGNoYXIgYyl7CgkJaWYoYyA9PSAnKCcpCgkJCXJldHVybiAwOwoJCQoJCWlmKGMgPT0gJysnIHx8IGM9PSAnLScpCgkJCXJldHVybiAxOwoJCQoJCWlmKGMgPT0gJyonIHx8IGMgPT0gJy8nIHx8IGMgPT0gJyUnKQoJCQlyZXR1cm4gMjsKCQkKCQlpZihjID09ICdeJykKCQkJcmV0dXJuIDM7CgkJCgkJcmV0dXJuIDA7Cgl9CgkKCXN0cmluZyBjb252ZXJ0VG9Qb3N0Zml4KHN0cmluZyBpbnApewoJCXN0cmluZyBhbnMgPSAiIjsKCQkKCQlmb3IoaW50IGkgPSAwOyBpIDwgaW5wLmxlbmd0aCgpOyArK2kpewoJCQkKCQkJaWYoaXNhbG51bShpbnBbaV0pKXsKCQkJCWFucyArPSBpbnBbaV07CgkJCX0KCQkJZWxzZSBpZihpbnBbaV0gPT0gJygnKXsKCQkJCXB1c2goJygnKTsKCQkJfQoJCQllbHNlIGlmKGlucFtpXSA9PSAnKScpewoJCQkJY2hhciB0OwoJCQkJCgkJCQl3aGlsZSgodCA9IHBvcCgpKSAhPSAnKCcpCgkJCQkJYW5zICs9IHQ7CgkJCX0KCQkJZWxzZXsKCQkJCXdoaWxlKCFpc0VtcHR5KCkgJiYgcHJpb3JpdHkodG9wRWxlbWVudCgpKSA+PSBwcmlvcml0eShpbnBbaV0pKXsKCQkJCQlhbnMgKz0gcG9wKCk7CgkJCQl9CgkJCQkKCQkJCXB1c2goaW5wW2ldKTsKCQkJfQoJCX0KCQkKCQl3aGlsZSghaXNFbXB0eSgpKXsKCQkJYW5zICs9IHBvcCgpOwoJCX0KCQkKCQlyZXR1cm4gYW5zOwoJfQoJCglzdHJpbmcgY29udmVydFRvUHJlZml4KHN0cmluZyBpbnApewoJCQoJCWludCBsZW4gPSBpbnAubGVuZ3RoKCk7CgkJCgkJZm9yKGludCBpID0gMDsgaSA8IGxlbi8yICsgMTsgKytpKXsKCQkJY2hhciB0ID0gKGlucFtpXSA9PSAnKCcgPyAnKScgOiAoaW5wW2ldID09ICcpJyA/ICcoJzogaW5wW2ldKSk7CgkJCWlucFtpXSA9IChpbnBbbGVuLWktMV0gPT0gJygnID8gJyknIDogKGlucFtsZW4taS0xXSAgPT0gJyknID8gJygnOiBpbnBbbGVuLWktMV0pKTsKCQkJaW5wW2xlbi1pLTFdID0gdDsKCQl9CgkJCgkJLy8gY291dDw8aW5wPDwiXG4iOwoJCQoJCWlucCA9IGNvbnZlcnRUb1Bvc3RmaXgoaW5wKTsKCQkKCQlyZXZlcnNlKGlucC5iZWdpbigpLCBpbnAuZW5kKCkpOwoJCQoJCXJldHVybiBpbnA7Cgl9Cn07CgoKaW50IG1haW4oKSB7Ci8vIAlpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKLy8gCWNpbi50aWUoMCk7CgkKCXN0cmluZyBpbnA7CgkKCWNpbj4+aW5wOwoJCglJbmZpeFRvUHJlUG9zdCBvYmo7CgkKCWNvdXQ8PCJQb3N0Zml4OiAiPDxvYmouY29udmVydFRvUG9zdGZpeChpbnApPDwiXG4iOwoJCgljb3V0PDwiUHJlZml4OiAiPDxvYmouY29udmVydFRvUHJlZml4KGlucCk8PCJcbiI7CgkKCXJldHVybiAwOwp9