



def     __lowercase(	UpperCAmelCase__ ):


      """simple docstring"""



      lowerCamelCase								=		[]
      lowerCamelCase								=		[]
      lowerCamelCase								=		{
          "^": 3,
          "*": 2,
          "/": 2,
          "%": 2,
          "+": 1,
          "-": 1,
      }  # Priority of each operator
      lowerCamelCase								=		len(UpperCAmelCase__ ) if (len(UpperCAmelCase__ ) > 7) else 7

      # Print table header for output
      print(
          "Symbol".center(8 )   ,   "Stack".center(UpperCAmelCase__ )   ,   "Postfix".center(UpperCAmelCase__ )   ,   sep=" | "   ,   )
      print("-" * (print_width * 3 + 7) )

      for x in infix:
            if x.isalpha() or x.isdigit():
                  post_fix.append(UpperCAmelCase__ )  # if x is Alphabet / Digit, add it to Postfix
            elif x == "(":
                  stack.append(UpperCAmelCase__ )  # if x is "(" push to Stack
            elif x == ")":  # if x is ")" pop stack until "(" is encountered
                  while stack[-1] != "(":
                        post_fix.append(stack.pop() )  # Pop stack & add the content to Postfix
                  stack.pop()
            else:
                  if len(UpperCAmelCase__ ) == 0:
                        stack.append(UpperCAmelCase__ )  # If stack is empty, push x to stack
                  else:  # while priority of x is not > priority of element in the stack
                        while len(UpperCAmelCase__ ) > 0 and priority[x] <= priority[stack[-1]]:
                              post_fix.append(stack.pop() )  # pop stack & add to Postfix
                        stack.append(UpperCAmelCase__ )  # push x to stack

            print(
                x.center(8 )   ,   ("".join(UpperCAmelCase__ )).ljust(UpperCAmelCase__ )   ,   ("".join(UpperCAmelCase__ )).ljust(UpperCAmelCase__ )   ,   sep=" | "   ,   )  # Output in tabular format

      while len(UpperCAmelCase__ ) > 0:  # while stack is not empty
            post_fix.append(stack.pop() )  # pop stack & add to Postfix
            print(
                " ".center(8 )   ,   ("".join(UpperCAmelCase__ )).ljust(UpperCAmelCase__ )   ,   ("".join(UpperCAmelCase__ )).ljust(UpperCAmelCase__ )   ,   sep=" | "   ,   )  # Output in tabular format

      return "".join(UpperCAmelCase__ )  # return Postfix as str

def     __lowercase(	UpperCAmelCase__ ):


      """simple docstring"""



      lowerCamelCase								=		list(infix[::-1] )  # reverse the infix equation

      for i in range(len(UpperCAmelCase__ ) ):
            if infix[i] == "(":
                  lowerCamelCase								=		")"  # change "(" to ")"
            elif infix[i] == ")":
                  lowerCamelCase								=		"("  # change ")" to "("

      return (infix_2_postfix("".join(UpperCAmelCase__ ) ))[
          ::-1
      ]  # call infix_2_postfix on Infix, return reverse of Postfix


if __name__ == "__main__":
     a_						:     str	     =		input('\nEnter an Infix Equation = ')  # Input an Infix equation
     a_						:     List[Any]	     =		''.join(Infix.split())  # Remove spaces from the input
     print('\n\t', Infix, '(Infix) -> ', infix_2_prefix(Infix), '(Prefix)')




import unittest

from transformers.testing_utils import CaptureStdout
from transformers.tools.python_interpreter import evaluate

def     __lowercase(	UpperCAmelCase__ ):


      """simple docstring"""



      return x + 2






class    lowerCamelCase__  (						unittest.TestCase):
     """simple docstring"""



     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"x = 3"
           lowerCamelCase								=		{}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           assert result == 3
           self.assertDictEqual(__a				,			{"x": 3}    )

           lowerCamelCase								=		"x = y"
           lowerCamelCase								=		{"y": 5}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           # evaluate returns the value of the last assignment.
           assert result == 5
           self.assertDictEqual(__a				,			{"x": 5, "y": 5}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"y = add_two(x)"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{"add_two": add_two}				,			state=__a    )
           assert result == 5
           self.assertDictEqual(__a				,			{"x": 3, "y": 5}    )

           # Won't work without the tool
           with CaptureStdout() as out:
                 lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           assert result is None
           assert "tried to execute add_two" in out.out







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"x = 3"
           lowerCamelCase								=		{}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           assert result == 3
           self.assertDictEqual(__a				,			{"x": 3}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"test_dict = {'x': x, 'y': add_two(x)}"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{"add_two": add_two}				,			state=__a    )
           self.assertDictEqual(__a				,			{"x": 3, "y": 5}    )
           self.assertDictEqual(__a				,			{"x": 3, "test_dict": {"x": 3, "y": 5}}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"x = 3\ny = 5"
           lowerCamelCase								=		{}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           # evaluate returns the value of the last assignment.
           assert result == 5
           self.assertDictEqual(__a				,			{"x": 3, "y": 5}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"text = f'This is x: {x}.'"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           # evaluate returns the value of the last assignment.
           assert result == "This is x: 3."
           self.assertDictEqual(__a				,			{"x": 3, "text": "This is x: 3."}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"if x <= 3:\n    y = 2\nelse:\n    y = 5"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           # evaluate returns the value of the last assignment.
           assert result == 2
           self.assertDictEqual(__a				,			{"x": 3, "y": 2}    )

           lowerCamelCase								=		{"x": 8}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           # evaluate returns the value of the last assignment.
           assert result == 5
           self.assertDictEqual(__a				,			{"x": 8, "y": 5}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"test_list = [x, add_two(x)]"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{"add_two": add_two}				,			state=__a    )
           self.assertListEqual(__a				,			[3, 5]    )
           self.assertDictEqual(__a				,			{"x": 3, "test_list": [3, 5]}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"y = x"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{}				,			state=__a    )
           assert result == 3
           self.assertDictEqual(__a				,			{"x": 3, "y": 3}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"test_list = [x, add_two(x)]\ntest_list[1]"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{"add_two": add_two}				,			state=__a    )
           assert result == 5
           self.assertDictEqual(__a				,			{"x": 3, "test_list": [3, 5]}    )

           lowerCamelCase								=		"test_dict = {'x': x, 'y': add_two(x)}\ntest_dict['y']"
           lowerCamelCase								=		{"x": 3}
           lowerCamelCase								=		evaluate(__a				,			{"add_two": add_two}				,			state=__a    )
           assert result == 5
           self.assertDictEqual(__a				,			{"x": 3, "test_dict": {"x": 3, "y": 5}}    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		"x = 0\nfor i in range(3):\n    x = i"
           lowerCamelCase								=		{}
           lowerCamelCase								=		evaluate(__a				,			{"range": range}				,			state=__a    )
           assert result == 2
           self.assertDictEqual(__a				,			{"x": 2, "i": 2}    )