# 输入
string = input()
arr = []
for i in string:
# 遇到数字
if '0' <= i <= '9':
# 判断前面是否数字,是否需要拼接
if len(arr) > 0 and '0' <= arr[-1] <= '9':
arr[-1] = arr[-1] + i
else:
arr.append(i)
# 遇到非数字,直接加入
else:
if i == '-':
# 如果如果是负数,则补0
if len(arr) == 0:
arr.append('0')
arr.append(i)
elif arr[-1] in "({[":
arr.append('0')
arr.append(i)
else:
arr.append(i)
else:
arr.append(i)
# 两个栈,一个存储运算符,一个存储数字
stack1,stack2,i = [],[],0
while i < len(arr):
# 遇到左括号,直接入栈
if arr[i] in "({[":
stack1.append(arr[i])
# 遇到右括号,依次弹出符号栈,直到左括号为止
elif arr[i] in ")}]":
while True:
temp = stack1.pop()
if temp in "({[":
break
else:
a = stack2.pop()
b = stack2.pop()
if temp == '+':
stack2.append(b+a)
elif temp == '-':
stack2.append(b-a)
elif temp == '*':
stack2.append(b*a)
else:
stack2.append(int(b/a))
# 遇到运算符,判断优先级
elif arr[i] in "+-*/":
# 如果stack1只有一个元素,直接加入
if not stack1:
stack1.append(arr[i])
else:
# 弹出stack1中所有大于当前运算符的运算符
while True:
if len(stack1) == 0:
stack1.append(arr[i])
break
temp = stack1[-1]
if temp in "({[" :
stack1.append(arr[i])
break
# 乘除,直接计算
elif temp in "*/":
temp = stack1.pop()
a = stack2.pop()
b = stack2.pop()
if temp == '*':
stack2.append(b*a)
elif temp == '/':
stack2.append(int(b/a))
# 加减,看当前元素是否也是加减
else:
if arr[i] in "+-":
temp = stack1.pop()
a = stack2.pop()
b = stack2.pop()
if temp == '+':
stack2.append(b+a)
elif temp == '-':
stack2.append(b-a)
stack1.append(arr[i])
else:
stack1.append(arr[i])
break
# 遇到数字,直接加入
else:
stack2.append(int(arr[i]))
i += 1
# 若 stack1还存在运算符,依次弹出
while stack1:
temp = stack1.pop()
a = stack2.pop()
b = stack2.pop()
if temp == '+':
stack2.append(b+a)
elif temp == '-':
stack2.append(b-a)
elif temp == '*':
stack2.append(b*a)
else:
stack2.append(int(b/a))
# 输出结果
print(stack2.pop())