#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
struct node {
  int ma, mi;
} a[1000010];
node x[1000010], y[1000010];
int cmp1(node x, node y) { return x.mi > y.mi; }
int cmp2(node x, node y) { return x.ma > y.ma; }
int main() {
  long long t;
  cin >> t;
  long long ans = t * t;
  int l = t;
  node tt;
  int num = 0;
  for (int k = 0; k < t; k++) {
    int n, m;
    cin >> n;
    int temp = 1;
    tt.mi = INF;
    tt.ma = -1;
    for (int i = 0; i < n; i++) {
      cin >> m;
      tt.mi = min(m, tt.mi);
      tt.ma = max(m, tt.ma);
      if (i > 0 && m > tt.mi) temp = 0;
    }
    if (temp) {
      x[num] = tt;
      y[num++] = tt;
    }
  }
  sort(x, x + num, cmp1);
  sort(y, y + num, cmp2);
  for (int i = 0; i < num; i++) {
    for (int j = 0; j < num; j++) {
      if (x[i].mi >= y[j].ma) {
        ans -= (num - j);
        break;
      }
    }
  }
  cout << ans << endl;
}
