#include #include #include #include namespace mp = boost::multiprecision; using Bint = mp::cpp_int; using namespace std; using namespace atcoder; #define rep(i, n) for(int i=0;i<(n);++i) #define rep1(i, n) for(int i=1;i<=(n);i++) #define ll long long using mint = modint998244353; using P = pair; using lb = long double; using T = tuple; #ifdef LOCAL # include # define dbg(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else # define dbg(...) (static_cast(0)) #endif int main() { int q; cin >> q; set v; set> e; set> f; rep(i,q) { vector vs(3); rep(j,3) cin >> vs[j]; sort(vs.begin(),vs.end()); rep(j,3) v.emplace(vs[j]); rep(j,3) rep(k,j) e.emplace(vs[j],vs[k]); rep(j,3)rep(k,j)rep(l,k) f.emplace(vs[j],vs[k],vs[l]); } cout << v.size() - e.size() + f.size() << endl; return 0; }