#include <iostream>
#include <cctype>

using namespace std;

    bool eval_expr(const char **pe, int &lhs, bool inside = false);
    char skip_ws(const char **pe) {
        while (**pe == ' ') ++(*pe);
        return **pe;
    }
    bool eval_prim(const char **pe, int &res) {
        char c = skip_ws(pe);
        if (c == '(') {
            ++(*pe);
            if (!eval_expr(pe, res, true)) return false;
            ++(*pe);
            return true;
        }
        if (isdigit(c)) {
            res = 0;
            while (isdigit(c)) {
                res = 10*res + c - '0';
                c = *(++(*pe));
            }
            return true;
        }
        return false;
    }
    bool eval_expr(const char **pe, int &lhs, bool inside) {
        if (!eval_prim(pe, lhs)) return false;
        char op;
        while ((op = skip_ws(pe)) && (op == '+' || op == '-' || op == '*' || op == '/')) {
            ++(*pe);
            int rhs;
            if (!eval_prim(pe, rhs)) return false;
            switch (op) {
                case '+': lhs += rhs; break;
                case '-': lhs -= rhs; break;
                case '*': lhs *= rhs; break;
                case '/': lhs /= rhs; break;
            }
        }
        return inside ? op == ')' : !op;
    }

    bool evaluate(const char *e, int &result) {
        return eval_expr(&e, result);
    }

int main() {
    int res;
    if (evaluate("2", res)) {
        cout << res << endl;
    } else {
        cout << "invalid" << endl;
    }
    if (evaluate("2+3", res)) {
        cout << res << endl;
    } else {
        cout << "invalid" << endl;
    }
    if (evaluate("2*3-4", res)) {
        cout << res << endl;
    } else {
        cout << "invalid" << endl;
    }
    if (evaluate("(1+2)+5", res)) {
        cout << res << endl;
    } else {
        cout << "invalid" << endl;
    }
    if (evaluate("", res)) {
        cout << res << endl;
    } else {
        cout << "invalid" << endl;
    }
    if (evaluate("2+", res)) {
        cout << res << endl;
    } else {
        cout << "invalid" << endl;
    }
    return 0;
}