#include <fstream>
#include <iostream>
#include <string>
#include <cstring>
#include <complex>
#include <cmath>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <cstdio>
#include <stack>
#include <algorithm>
#include <list>
#include <ctime>
#include <cassert>
#include <iomanip>
using namespace std;
//```
#define ONLINE_JUDGE
const double epsilon = 1e-7;
#define LL long long
#define ULL unsigned long long
#define MOD1 666013
#define MOD2 666019
#define base 73
typedef vector<int> vi;
typedef vector<long long> vl;
typedef vector<bool> vb;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef vector<double> vd;
typedef vector<string> vs;
typedef pair<int, int> ii;
typedef pair<long long, long long> ll;
typedef vector<ii> vii;
typedef vector<ll> vll;
#define all(V) V.begin(), V.end()
#define allr(V) V.rbegin(), V.rend()
#define for_c_it(container, it) for (auto it : container)
#define present(container, element) (container.find(element) != container.end())
#define sz(a) int((a).size())
#define pb push_back
#define mp make_pair
#define zeroes(x) ((x ^ (x - 1)) & x)
char S[100001];
int getExpression(int &pos, int &lg);
int getTerm(int &pos, int &lg);
int getFact(int &pos, int &lg);
int getValue(int &pos, int &lg);
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#else
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
#endif
int pos = 0, lg;
scanf("%s", S);
lg = strlen(S);
printf("%d", getExpression(pos, lg));
return 0;
}
int getExpression(int &pos, int &lg) {
int value = getTerm(pos, lg);
while(pos < lg && (S[pos] == '+' || S[pos] == '-')) {
if (S[pos] == '+') {
value += getTerm(++pos, lg);
}
else {
value -= getTerm(++pos, lg);
}
}
return value;
}
int getTerm(int &pos, int &lg) {
int fact = getFact(pos, lg);
while(pos < lg && (S[pos] == '*' || S[pos] == '/')) {
if (S[pos] == '*') {
fact *= getFact(++pos, lg);
}
else {
fact /= getFact(++pos, lg);
}
}
return fact;
}
int getFact(int &pos, int &lg) {
if (S[pos] == '(') {
++pos;
int value = getExpression(pos, lg);
++pos;
return value;
}
return getValue(pos, lg);
}
int getValue(int &pos, int &lg) {
int value = 0, sg = 1;
if (S[pos] == '-') {
sg = -1;
++pos;
}
while(pos < lg && isdigit(S[pos])) {
value = value * 10 + (S[pos] - '0');
++pos;
}
return sg * value;
}