#include using namespace std; using ll = long long; constexpr char newl = '\n'; int calc(const vector& v, bool is_moist) { multiset s(v.begin(), v.end()); int res = 0; while (!s.empty()) { auto it = s.begin(); int x = *it; s.erase(it); it = (is_moist ? s.find(-x) : s.upper_bound(-x)); if (it == s.end()) continue; ++res; s.erase(it); } return res; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; n <<= 1; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a.begin(), a.end()); int wet = calc(a, false); int moist = calc(a, true); for (int i = 0; i < n; i++) { a[i] = -a[i]; } reverse(a.begin(), a.end()); int dry = calc(a, false); cout << dry << " " << wet << " " << moist << newl; return 0; }