1455 : 队伍取名
题目描述Description
取名字总是很难的,而打 XCPC 的时候给队伍取名更是很难的。
Kagarii 最近在为队伍取队名的事情绞尽脑汁,如何将队名起得卓尔不群,独树一帜,大气磅礴,内涵丰富,意味深长,独具匠心,耐人寻味是一件很难的事情。更别说队伍里有三个人,需要满足三个人的口味更是难上加难。
最后,走投无路的 Kagarii 想到了一个非常老套的办法:从每个队员的名字里选一个字出来,组成三个字的队名。但他突然发现,三个队员的各选一个字出来,恰好是队伍里某个队员的名字!
比如 Kagarii 的队伍中三个人名字分别为:大大卷,小中大,大中小,那么这三个人可以取队名叫做「大中小」(「大大卷」的第一个字,「小中大」的第二个字,「大中小」的第三个字),恰好是一个队员的名字。
显然这个时候取队名就很方便了,所以 Kagarii 准备把这个取名方式推广到整个集训队。他希望见到更多这样的队名。
具体的,集训队有 n 名成员,其中第 i 名成员的名字是由三个数字 S_{i,1},S_{i,2},S_{i,3} 组成(由于汉字的数量太多了,所以全部编码成整数表示),并且保证所有成员的名字都不相同。Kagarii 想知道有多少个选出三人组队的方式,使得从每个人名字里选一个不同位置的字,按照在原本名字里的位置将这三个选出的字组合起来,恰好是某个队员的名字,当然如果组成的队名不同,也看做不同的方案。
形式化的,即询问四元组 (i,j,k,id)(1\le i<j<k\le n,id\in \{i,j,k\})的个数,满足存在一个 \{i,j,k\} 的排列 p,使得 \forall x\in \{1,2,3\},S_{id,x}=S_{p_x,x} 成立。
输入格式Input
第一行一个正整数 n(3\le n\le 10^5),表示人数。
接下来 n 行,每行三个正整数 S_{i,1},S_{i,2},S_{i,3}(1\le S_{i,j}\le 10^6),表示每个人的名字。保证对于任意 i\neq j,存在 x 满足 S_{i,x}\neq S_{j,x}。
输出格式Output
输出一行一个整数,表示合法的四元组个数。
样例Sample
提示Hint
对于样例 1,一个满足条件的四元组为 (2,3,5,2),对应的排列 p 为 \{3,5,2\}。
对于样例 2,满足条件的四元组为 (1,2,3,1),(1,2,3,2),(1,2,3,3)。