/* 問題をよく読もう! 論理的に考えよう! サンプルを確認しよう! 絶対に諦めるな! 工夫をしろ! 配列は少し多めにとっておく Twitterは終わるまでログアウト! (間違えて解法をツイートしてはいけないから) */ //include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //namespace using namespace std; //繰り返し #define REP(i, m, n) for(int i=(int)m; i<(int)n; ++i) #define rep(i, n) REP(i, 0, n) //イテレータ #define all_range(C) begin(C), end(C) //簡略化 typedef long long ll; typedef pair pint; typedef pair pli; typedef pair pst; const int inf = 1e9+7; const ll longinf = 1LL<<60; const ll mod = 1e9+7; //最大最小 template inline void chmin(T1 &a, T2 b) {if(a>b) a=b;} template inline void chmax(T1 &a, T2 b) {if(a0) { sum *= x; --y; } return sum; } /*考えを書くスペース 累乗和で解く ・総和を求める ・取り消すところの一つ先を見る */ //main.cpp---------------------------- #define max_m 200 void solve(); int n; int item[10]; int main() { cin >> n; solve(); return 0; } void solve() { int a, b, c; int cnt = 0; rep(i, n) { cin >> a >> b >> c; ++item[a-1]; ++item[b-1]; ++item[c-1]; rep(j, 10) { if(item[j]/2>0) { cnt += item[j]/2; item[j] = item[j]%2; } } } int one = 0; rep(i, 10) { if(item[i]==1) { ++one; } } cout << cnt + one/4 << endl; }