#include #include #include #include using namespace std; using Info = pair; // (残存数, 竹の長さ) int main() { int t; cin >> t; while (t--) { int n; cin >> n; map counter; for (int i = 0; i < n; i++) { int l; cin >> l; counter[l]++; } priority_queue que; for (auto it = counter.begin(); it != counter.end(); it++) { Info info = make_pair(it->second, it->first); que.push(info); } int ans = 0; while (true) { int num = 0; vector temp; while (!que.empty() && num < 3) { Info info = que.top(); que.pop(); info.first--; num++; if (info.first > 0) temp.push_back(info); } for (auto elt : temp) { que.push(elt); } if (num == 3) ans++; else break; } cout << ans << endl; } return 0; }