#include<fstream>
using namespace std;
int z[32],t;
int a[32]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,91,97,101,103,107,109,113,127};
int b[32][129][129][129],i,j,k,u,v,w;
long N,X,r,Y[32];
fstream fin,fout;
void sub(int z[32],int k,int p)
{
if (p<128)
{
if ((k-1)%2==1)
X=X+Y[p];
else X=X-Y[p];
for (int i=z[k-1]+1;i<32;i++)
{
z[k]=i;
sub(z,k+1,p*a[i]);
}
}
}
int main(void)
{
fin.open("puteri.in",ios::in);
fout.open("puteri.out",ios::out);
for (i=0;i<=128;i++)
for (j=0;j<=128;j++)
for (k=0;k<=128;k++)
for (u=0;u<32;u++)
b[u][i][j][k]=0;
fin>>N;
for (i=1;i<=N;i++)
{
fin>>u>>v>>w;
for (j=0;j<32;j++)
{
t=a[j];
b[j][u%t][v%t][w%t]++;
}
}
for (j=0;j<32;j++)
{
Y[j]=0;
t=a[j];
for (u=0;u<t;u++)
for (v=0;v<t;v++)
for (w=0;w<t;w++)
if ((t==u+u)&&(t==v+v)&&(t==w+w))
Y[j]=Y[j]+b[j][u][v][w]*(b[j][u][v][w]-1)/2;
else Y[j]=Y[j]+b[j][u][v][w]*b[j][t-u][t-v][t-w];
}
X=0;
z[0]=0;
sub(z,1,1);
fout<<X<<endl;
fin.close();
fout.close();
return 0;
}