#include #include #include #include using namespace std; struct X{ int num; int L; X(int _num,int _L){ num=_num; L=_L; } }; bool Comp(X &l,X&r){ if (l.num>r.num){ return true; }else if (l.num==r.num){ return l.L>r.L; }else{ return false; } } int main(int argc, char* argv[]) { int T,N,L; cin>>T; map myMap; map::iterator mit; for (int i=0;i>N; for (int j=0;j>L; mit=myMap.find(L); if (mit==myMap.end()){ myMap[L]=1; }else{ myMap[L]++; } } vector myVec; for (mit=myMap.begin();mit!=myMap.end();mit++){ myVec.push_back(X((*mit).second,(*mit).first)); } myMap.clear(); int ans=0; while (myVec.size()>=3){ sort(myVec.begin(),myVec.end(),Comp); myVec[0].num--; myVec[1].num--; myVec[2].num--; ans++; if (myVec[2].num==0){ myVec.erase(myVec.begin()+2); } if (myVec[1].num==0){ myVec.erase(myVec.begin()+1); } if (myVec[0].num==0){ myVec.erase(myVec.begin()); } } myVec.clear(); cout<