use std::collections::BTreeSet;

use proconio::input;

fn main() {
    input! {
        q: usize,
        abc: [(usize, usize, usize); q],
    }

    let mut v = BTreeSet::new();
    let mut e = BTreeSet::new();
    let mut f = BTreeSet::new();
    for &(a, b, c) in &abc {
        v.extend([a, b, c]);
        e.extend([(a, b), (b, c), (a, c)]);
        f.insert((a, b, c));
    }

    println!("{}", v.len() as i64 - e.len() as i64 + f.len() as i64);
}