package main
import "fmt"
type student struct{
score [3]int //数据域
countup int //总计
next *student //指针域
}
func main(){
var(
n int
i = 0
j = 0
k = 0
head,pr,pw *student
x [3]int
count = 0 //用于计数
skip = 1
)
fmt.Scan(&n)
for i = 0;i < n;i ++{
pr = new(student)
if(head == nil){ //若头指针为空,则头指针指向新节点
head = pr
}else{ //若头指针不为空,则向后移动直至空指针
pw = head
for pw.next != nil{
pw = pw.next
}
pw.next = pr
}
//输入信息
pr.countup = 0
for j = 0;j < 3;j ++{
fmt.Scanf("%d",&x[j])
pr.score[j] = x[j]
pr.countup += x[j]
}
pr.next = nil
}
//通过多次循环对链表进行遍历,找出"旗鼓相当的对手"
pw = head //使pw指向头指针
for i = 0;i < n - 1;i ++{
pr = pw.next //pr指向pw便于查找遍历
for j = i + 1;j < n;j ++{
skip = 0
for k = 0;k < 3;k ++{
kr := pw.score[k] - pr.score[k]
if kr < -5 || kr > 5{
skip = 1
break
}
}
if skip == 0 && (pw.countup - pr.countup) >= -5 &&
(pw.countup - pr.countup) <= 5{
count ++
}
pr = pr.next
}
pw = pw.next //pw向后移动
}
fmt.Println(count)
}