#include #include using Int = long long; int main() { int Q; Int Y; std::cin >> Q >> Y; std::string s[Q]; for (int i = 0; i < Q; ++i) std::cin >> s[i]; Int lo = -1, hi = Y; while (lo + 1 < hi) { Int mid = lo + hi >> 1; std::vector A; for (int i = 0; i < Q; ++i) { if (s[i] == "+") { Int x = A[A.size() - 1] + A[A.size() - 2]; A.pop_back(); A.pop_back(); A.push_back(x); } else if (s[i] == "min") { Int x = std::min(A[A.size() - 1], A[A.size() - 2]); A.pop_back(); A.pop_back(); A.push_back(x); } else if (s[i] == "max") { Int x = std::max(A[A.size() - 1], A[A.size() - 2]); A.pop_back(); A.pop_back(); A.push_back(x); } else { Int ss; if (s[i] == "X") { ss = mid; } else { ss = stoll(s[i]); } A.push_back(ss); } } (A[0] < Y ? lo : hi) = mid; } std::vector A; for (int i = 0; i < Q; ++i) { if (s[i] == "+") { Int x = A[A.size() - 1] + A[A.size() - 2]; A.pop_back(); A.pop_back(); A.push_back(x); } else if (s[i] == "min") { Int x = std::min(A[A.size() - 1], A[A.size() - 2]); A.pop_back(); A.pop_back(); A.push_back(x); } else if (s[i] == "max") { Int x = std::max(A[A.size() - 1], A[A.size() - 2]); A.pop_back(); A.pop_back(); A.push_back(x); } else { Int ss; if (s[i] == "X") { ss = hi; } else { ss = stoll(s[i]); } A.push_back(ss); } } std::cout << (A[0] == Y ? hi : -1) << std::endl; }