#include <bits/stdc++.h>
using namespace std;
using cd = complex<double>;
mt19937 rnd(chrono::system_clock::now().time_since_epoch().count());
long long num[2][2];
long long cal(long long sx, long long sy, long long nx, long long ny) {
  if (sx == nx && sy == ny)
    return 0;
  else
    return 2;
}
long long get(long long x, long long n) {
  if (x < n) return 0;
  if (n == 1) return x;
  if (n == 2) return (x * (x - 1)) / 2;
  if (n == 3) return (x * (x - 1) * (x - 2)) / 6;
  return 0;
}
int main() {
  long long n, ans = 0;
  cin >> n;
  for (long long i = 1; i <= n; i++) {
    long long x, y;
    cin >> x >> y;
    num[(x % 4) / 2][(y % 4) / 2]++;
  }
  for (long long i = 0; i < 4; i++) {
    for (long long j = i; j < 4; j++) {
      for (long long k = j; k < 4; k++) {
        long long ax = i / 2, ay = i % 2;
        long long bx = j / 2, by = j % 2;
        long long cx = k / 2, cy = k % 2;
        long long v = cal(ax, ay, bx, by);
        v += cal(ax, ay, cx, cy);
        v += cal(bx, by, cx, cy);
        v %= 4;
        if (v == 0) {
          if (i == k) {
            ans += get(num[ax][ay], 3);
          } else if (i == j) {
            ans += get(num[ax][ay], 2) * num[cx][cy];
          } else if (j == k) {
            ans += num[ax][ay] * get(num[bx][by], 2);
          } else {
            ans += num[ax][ay] * num[bx][by] * num[cx][cy];
          }
        }
      }
    }
  }
  cout << ans << endl;
}
