#include <stdio.h>
#define MAXN 100000
#define MAXP 127
#define PRIMES 30
int x[MAXN], y[MAXN], z[MAXN], p[PRIMES] = {3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127};
int ma[MAXP][MAXP][MAXP];
int main(){
FILE *in = fopen("puteri.in", "r");
int n, i;
fscanf(in, "%d", &n);
for(i = 0; i < n; i++)
fscanf(in, "%d%d%d", &x[i], &y[i], &z[i]);
fclose(in);
int k, j, ii;
long long rez = 0, adun;
for(i = 0; i < n; i++)
ma[x[i] & 1][y[i] & 1][z[i] & 1]++;
for(i = 0; i < 2; i++)
for(j = 0; j < 2; j++)
for(ii = 0; ii < 2; ii++)
rez += 1LL * ma[i][j][ii] * (ma[i][j][ii] - 1) / 2;
for(k = 0; k < PRIMES; k++){
for(i = 0; i < p[k]; i++)
for(j = 0; j < p[k]; j++)
for(ii = 0; ii < p[k]; ii++)
ma[i][j][ii] = 0;
for(i = 0; i < n; i++){
ma[x[i] % p[k]][y[i] % p[k]][z[i] % p[k]]++;
}
adun = 0;
for(i = 0; i < p[k]; i++){
for(j = 0; j < p[k]; j++){
for(ii = 0; ii < p[k]; ii++){
if(!(i == 0 && j == 0 && ii == 0))
adun += 1LL * ma[i][j][k] * ma[(p[k] - i) % p[k]][(p[k] - j) % p[k]][(p[k] - ii) % p[k]];
}
}
}
adun /= 2;
adun += 1LL * ma[0][0][0] * (ma[0][0][0] - 1) / 2;
rez += adun;
}
FILE *out = fopen("puteri.out", "w");
fprintf(out, "%lld", rez);
fclose(out);
return 0;
}