#include <iostream>
#include <string>
#include <string.h>
#include <ctype.h>
bool n_expr (const char *&s, int &result);
bool p_expr (const char *&s, int &result);
bool o_expr (const char *&s, int &result, int eos);
bool expr (const char *&s, int &result, int eos = 0) {
while (isspace(*s)) ++s;
if (*s == eos) return false;
if (isdigit(*s)) {
if (!n_expr(s, result)) return false;
} else if (*s == '(') {
if (!p_expr(s, result)) return false;
} else return false;
while (isspace(*s)) ++s;
if (*s == eos) return true;
return o_expr(s, result, eos);
}
bool n_expr (const char *&s, int &result) {
int n = 0;
while (isdigit(*s)) n = 10 * n + (*s++ - '0');
result = n;
return true;
}
bool p_expr (const char *&s, int &result) {
if (expr(++s, result, ')')) {
++s;
return true;
}
return false;
}
bool o_expr (const char *&s, int &result, int eos) {
int oresult = 0;
const char *op = strchr("+-*/", *s);
if (op == 0) return false;
if (!expr(++s, oresult, eos)) return false;
switch (*op) {
case '+': result += oresult; break;
case '-': result -= oresult; break;
case '*': result *= oresult; break;
case '/': result /= oresult; break;
default: return false;
}
return true;
}
int main() {
std::string buf;
const char *p;
int r;
while (std::getline(std::cin, buf)) {
if (expr(p = buf.c_str(), r)) {
std::cout << r << std::endl;
} else {
std::cout << "ERROR\n";
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgoKYm9vbCBuX2V4cHIgKGNvbnN0IGNoYXIgKiZzLCBpbnQgJnJlc3VsdCk7CmJvb2wgcF9leHByIChjb25zdCBjaGFyIComcywgaW50ICZyZXN1bHQpOwpib29sIG9fZXhwciAoY29uc3QgY2hhciAqJnMsIGludCAmcmVzdWx0LCBpbnQgZW9zKTsKCmJvb2wgZXhwciAoY29uc3QgY2hhciAqJnMsIGludCAmcmVzdWx0LCBpbnQgZW9zID0gMCkgewogICAgd2hpbGUgKGlzc3BhY2UoKnMpKSArK3M7CiAgICBpZiAoKnMgPT0gZW9zKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoaXNkaWdpdCgqcykpIHsKICAgICAgICBpZiAoIW5fZXhwcihzLCByZXN1bHQpKSByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgaWYgKCpzID09ICcoJykgewogICAgICAgIGlmICghcF9leHByKHMsIHJlc3VsdCkpIHJldHVybiBmYWxzZTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgICB3aGlsZSAoaXNzcGFjZSgqcykpICsrczsKICAgIGlmICgqcyA9PSBlb3MpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIG9fZXhwcihzLCByZXN1bHQsIGVvcyk7Cn0KCmJvb2wgbl9leHByIChjb25zdCBjaGFyIComcywgaW50ICZyZXN1bHQpIHsKICAgIGludCBuID0gMDsKICAgIHdoaWxlIChpc2RpZ2l0KCpzKSkgbiA9IDEwICogbiArICgqcysrIC0gJzAnKTsKICAgIHJlc3VsdCA9IG47CiAgICByZXR1cm4gdHJ1ZTsKfQoKYm9vbCBwX2V4cHIgKGNvbnN0IGNoYXIgKiZzLCBpbnQgJnJlc3VsdCkgewogICAgaWYgKGV4cHIoKytzLCByZXN1bHQsICcpJykpIHsKICAgICAgICArK3M7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmJvb2wgb19leHByIChjb25zdCBjaGFyIComcywgaW50ICZyZXN1bHQsIGludCBlb3MpIHsKICAgIGludCBvcmVzdWx0ID0gMDsKICAgIGNvbnN0IGNoYXIgKm9wID0gc3RyY2hyKCIrLSovIiwgKnMpOwogICAgaWYgKG9wID09IDApIHJldHVybiBmYWxzZTsKICAgIGlmICghZXhwcigrK3MsIG9yZXN1bHQsIGVvcykpIHJldHVybiBmYWxzZTsKICAgIHN3aXRjaCAoKm9wKSB7CiAgICBjYXNlICcrJzogcmVzdWx0ICs9IG9yZXN1bHQ7IGJyZWFrOwogICAgY2FzZSAnLSc6IHJlc3VsdCAtPSBvcmVzdWx0OyBicmVhazsKICAgIGNhc2UgJyonOiByZXN1bHQgKj0gb3Jlc3VsdDsgYnJlYWs7CiAgICBjYXNlICcvJzogcmVzdWx0IC89IG9yZXN1bHQ7IGJyZWFrOwogICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCmludCBtYWluKCkgewoJc3RkOjpzdHJpbmcgYnVmOwoJY29uc3QgY2hhciAqcDsKCWludCByOwoJd2hpbGUgKHN0ZDo6Z2V0bGluZShzdGQ6OmNpbiwgYnVmKSkgewoJCWlmIChleHByKHAgPSBidWYuY19zdHIoKSwgcikpIHsKCQkJc3RkOjpjb3V0IDw8IHIgPDwgc3RkOjplbmRsOwoJCX0gZWxzZSB7CgkJCXN0ZDo6Y291dCA8PCAiRVJST1JcbiI7CgkJfQoJfQoJcmV0dXJuIDA7Cn0=