#include <iostream>
#include <stack>
using namespace std;
void solve(string &s){
stack<char> cur;
for(int i = 0; i < s.size(); i++){
if(!cur.empty() && ((cur.top() == '(' && s[i] == ')') || (cur.top() == '{' && s[i] == '}') || (cur.top() == '[' && s[i] == ']')))
cur.pop();
else cur.push(s[i]);
}
if(cur.empty()) cout << "YES";
else cout << "NO";
}
signed main() {
string str;
cin >> str;
solve(str);
}
я точно не знаю, но уверена, что что модуль можно нимать лишь тогда, когда в этой части уранения больше нет никаких другив компонентов. тоесть, надо перепести все слагаемы в другую часть уравнения. некоторое я знаю точно: 1) модуль всегда равен положительному числу.2) если под знаком модуля положительное число, то знак модуля просто снимается.3) если под знаком модуля отрицательное число, то у него меняется знак на противоположный, и оно становится положительным.
1)д