# Write a function to check if the given expression is balanced or not.
from collections import deque


def check_expression(exp):
    if len(exp) & 1:
        return False
    stack = deque()
    for ch in exp:
        if ch == "(" or ch == "{" or ch == "[":
            stack.append(ch)
        if ch == ")" or ch == "}" or ch == "]":
            if not stack:
                return False
            top = stack.pop()
            if (top == "(" and ch != ")") or (
                top == "{" and ch != "}" or (top == "[" and ch != "]")
            ):
                return False
    return not stack
