#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main(){ int N, A, dry=0, moist=0, wet=0; cin >> N; multiset st, ts; map mp; for (int i=0; i> A; st.insert(A); mp[A]++; } ts = st; while(1){ if (ts.size() <= 1) break; if (*ts.begin() + *ts.rbegin() > 0){ ts.erase(ts.find(*ts.rbegin())); wet++; } ts.erase(ts.begin()); } ts = st; while(1){ if (ts.size() <= 1) break; if (*ts.begin() + *ts.rbegin() < 0){ ts.erase(ts.begin()); dry++; } ts.erase(ts.find(*ts.rbegin())); } for (auto [x, y] : mp){ if (x < 0) moist += min(y, mp[-x]); if (x == 0) moist += y/2; } cout << dry << " " << wet << " " << moist << endl; return 0; }