#include <stdio.h>
#include <string.h>
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 100111
#define pmax 128
#define kmax 65
typedef long long lint;
int H[pmax][pmax][pmax],n;
//int A[nmax],B[nmax],C[nmax];
int A[kmax][kmax][kmax];
int mod[pmax][pmax];
lint sol;
int main()
{
freopen("puteri.in","r",stdin);
freopen("puteri.out","w",stdout);
scanf("%d",&n);
int i,j,a,b,c,p,g,aa,bb,cc;
lint aux;
FOR(i,0,n)
{
scanf("%d %d %d",&a,&b,&c);
A[a][b][c]++;
// A[i]=a,B[i]=b,C[i]=c;
}
FOR(a,0,pmax) FOR(b,1,pmax)
mod[b][a]=a%b;
FOR(p,2,129)
{
j=p;a=0;
FOR(i,2,p+1)
{
if(j%i==0)
j/=i,a++;
if(j%i==0)
break;
}
if(i!=p+1)
continue;
j=a&1;
if(p<=65)
{
memset(H,0,sizeof(H));
aa=0;
FOR(a,0,65)
{
if(aa==p)
aa=0;
bb=0;
FOR(b,0,65)
{
if(bb==p)
bb=0;
cc=0;
FOR(c,0,65)
{
if(cc==p)
cc=0;
H[aa][bb][cc]+=A[a][b][c];
cc++;
}
bb++;
}
aa++;
}
}
aux=0;
g=p>64?65:p;
FOR(a,0,g) FOR(b,0,g) FOR(c,0,g)
{
if((a+a==p||!a)&&(b+b==p||!b)&&(c+c==p||!c))
aux+=(lint)H[a][b][c]*(H[a][b][c]-1);
else
aux+=(lint)H[a][b][c]*H[a?p-a:0][b?p-b:0][c?p-c:0]*2;
H[a?p-a:0][b?p-b:0][c?p-c:0]=0;
H[a][b][c]=0;
}
if(j)
sol+=aux;
else
sol-=aux;
}
printf("%lld\n",sol/2);
return 0;
}