// editor2#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX 1000
char *stack[MAX];
int top = -1;

void push(char *op) {
    stack[++top] = op;
}

char* pop() {
    if (top == -1) return NULL;
    return stack[top--];
}

char* peek() {
    if (top == -1) return NULL;
    return stack[top];
}
int precedence(char *op) {
    if (strcmp(op, "NOT") == 0) return 3;
    if (strcmp(op, "AND") == 0) return 2;
    if (strcmp(op, "OR") == 0) return 1;
    return 0;
}
int isOperator(char *token) {
    return (strcmp(token, "AND") == 0 || strcmp(token, "OR") == 0 || strcmp(token, "NOT") == 0);
}

int main() {
    char input[MAX];
    if (!fgets(input, sizeof(input), stdin)) return 0;
    char output[MAX][MAX];
    int outCount = 0;

    char *tokens[MAX];
    int tokenCount = 0;

    char *tok = strtok(input, " \n");
    while (tok != NULL) {
        tokens[tokenCount++] = tok;
        tok = strtok(NULL, " \n");
    }

    for (int i = 0; i < tokenCount; i++) {
        char *t = tokens[i];

        if (isalpha(t[0]) && strlen(t) == 1) {  
            strcpy(output[outCount++], t);
        } 
        else if (isOperator(t)) {
            while (top != -1 && isOperator(peek()) && 
                  ((precedence(peek()) > precedence(t)) ||
                  (precedence(peek()) == precedence(t) && strcmp(t,"NOT")!=0))) {
                strcpy(output[outCount++], pop());
            }
            push(t);
        }
        else if (strcmp(t, "(") == 0) {
            push(t);
        }
        else if (strcmp(t, ")") == 0) {
            while (top != -1 && strcmp(peek(), "(") != 0) {
                strcpy(output[outCount++], pop());
            }
            if (top == -1) {
                printf("Invalid input\n");
                return 0;
            }
            pop();
        }
        else {
            printf("Invalid input\n");
            return 0;
        }
    }
    while (top != -1) {
        if (strcmp(peek(), "(") == 0) {
            printf("Invalid input\n");
            return 0;
        }
        strcpy(output[outCount++], pop());
    }
    for (int i = 0; i < outCount; i++) {
        printf("%s ", output[i]);
    }
    printf("\n");

    return 0;
}