inline T read(){ T sum = 0, fl = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') fl = -1; for (; isdigit(ch); ch = getchar()) sum = sum * 10 + ch - '0'; return sum * fl; }
template <typename T>
inlinevoidwrite(T x){ if (x < 0) { putchar('-'), write<T>(-x); return; } static T sta[35]; int top = 0; do { sta[top++] = x % 10, x /= 10; } while (x); while (top) putchar(sta[--top] + 48); }
intmain(){ IOS; cin >> s; len = s.size(); for (int i = 0; i < len; ++i) { if (stk.empty()) stk.push(s[i]); elseif ((stk.top() == '[' && s[i] == ']') || (stk.top() == '(' && s[i] == ')')) stk.pop(); else stk.push(s[i]); } if (stk.size()) cout << "Unbalanced"; else cout << "Balanced"; return0; }