#include <iostream>
#include <stack>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int main() {
int t;
cin >> t;
cin.ignore(); // skip newline after t
while (t--) {
int n;
cin >> n;
cin.ignore(); // skip newline after n
string line;
getline(cin, line); // read the full expression
// Tokenize
vector<string> tokens;
stringstream ss(line);
string token;
while (ss >> token) {
tokens.push_back(token);
}
if (tokens.size() != n) {
cout << "Invalid Expression" << endl;
continue;
}
stack<long long> st;
bool valid = true;
for (int i = tokens.size() - 1; i >= 0; --i) {
string tok = tokens[i];
if (isdigit(tok[0]) || (tok[0] == '-' && tok.size() > 1)) {
// valid number
st.push(stoll(tok));
} else if (tok == "+" || tok == "-" || tok == "*" || tok == "/") {
if (st.size() < 2) {
valid = false;
break;
}
long long a = st.top(); st.pop();
long long b = st.top(); st.pop();
if (tok == "+") st.push(a + b);
else if (tok == "-") st.push(a - b);
else if (tok == "*") st.push(a * b);
else if (tok == "/") {
if (b == 0) {
valid = false;
break;
}
st.push(a / b);
}
} else {
valid = false;
break;
}
}
if (valid && st.size() == 1) {
cout << st.top() << endl;
} else {
cout << "Invalid Expression" << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgY2luLmlnbm9yZSgpOyAvLyBza2lwIG5ld2xpbmUgYWZ0ZXIgdAoKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBjaW4uaWdub3JlKCk7IC8vIHNraXAgbmV3bGluZSBhZnRlciBuCgogICAgICAgIHN0cmluZyBsaW5lOwogICAgICAgIGdldGxpbmUoY2luLCBsaW5lKTsgLy8gcmVhZCB0aGUgZnVsbCBleHByZXNzaW9uCgogICAgICAgIC8vIFRva2VuaXplCiAgICAgICAgdmVjdG9yPHN0cmluZz4gdG9rZW5zOwogICAgICAgIHN0cmluZ3N0cmVhbSBzcyhsaW5lKTsKICAgICAgICBzdHJpbmcgdG9rZW47CiAgICAgICAgd2hpbGUgKHNzID4+IHRva2VuKSB7CiAgICAgICAgICAgIHRva2Vucy5wdXNoX2JhY2sodG9rZW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gbikgewogICAgICAgICAgICBjb3V0IDw8ICJJbnZhbGlkIEV4cHJlc3Npb24iIDw8IGVuZGw7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgc3RhY2s8bG9uZyBsb25nPiBzdDsKICAgICAgICBib29sIHZhbGlkID0gdHJ1ZTsKCiAgICAgICAgZm9yIChpbnQgaSA9IHRva2Vucy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICAgICBzdHJpbmcgdG9rID0gdG9rZW5zW2ldOwoKICAgICAgICAgICAgaWYgKGlzZGlnaXQodG9rWzBdKSB8fCAodG9rWzBdID09ICctJyAmJiB0b2suc2l6ZSgpID4gMSkpIHsKICAgICAgICAgICAgICAgIC8vIHZhbGlkIG51bWJlcgogICAgICAgICAgICAgICAgc3QucHVzaChzdG9sbCh0b2spKTsKICAgICAgICAgICAgfSBlbHNlIGlmICh0b2sgPT0gIisiIHx8IHRvayA9PSAiLSIgfHwgdG9rID09ICIqIiB8fCB0b2sgPT0gIi8iKSB7CiAgICAgICAgICAgICAgICBpZiAoc3Quc2l6ZSgpIDwgMikgewogICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsb25nIGxvbmcgYSA9IHN0LnRvcCgpOyBzdC5wb3AoKTsKICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBiID0gc3QudG9wKCk7IHN0LnBvcCgpOwoKICAgICAgICAgICAgICAgIGlmICh0b2sgPT0gIisiKSBzdC5wdXNoKGEgKyBiKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRvayA9PSAiLSIpIHN0LnB1c2goYSAtIGIpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rID09ICIqIikgc3QucHVzaChhICogYik7CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2sgPT0gIi8iKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3QucHVzaChhIC8gYik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICh2YWxpZCAmJiBzdC5zaXplKCkgPT0gMSkgewogICAgICAgICAgICBjb3V0IDw8IHN0LnRvcCgpIDw8IGVuZGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY291dCA8PCAiSW52YWxpZCBFeHByZXNzaW9uIiA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=