    #include <bits/stdc++.h>
     
    #define fast_io ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0)
    #define pb push_back
    #define mp make_pair
    #define all(v) (v).begin(), (v).end()
    #define rall(v) (v).rbegin(), (v).rend()
    #define forn(i, n) for(int (i) = 0; (i) < n; ++(i))
    #define fornr(i, from, to) for(int (i) = from; (i) <= to; ++(i))
    #define endl '\n'
     
    using namespace std;
    using ll = long long;
    using ull = unsigned long long;
    using pii = pair < int, int >;
    using pll = pair < ll, ll >;
    using vi = vector < int >;
    using vii = vector < vi >;
     
    template < typename T >
    std::ostream& operator<<(std::ostream& os, const std::vector < T > &vec)
    {
        forn(i, vec.size())
            os << vec[i] << ' ';
        return os;
    }
     
     
    ///////////
    ////   ////
    ///////////
     
    int main()
    {
        ios_base::sync_with_stdio(false);
        int64_t n;
        cin >> n;
     
        vector < pair < int, int > > seq;
        seq.reserve(n);
     
        int64_t ans = 0;
        int64_t cnt = 0;
        for(int i = 0; i < n; ++i)
        {
            int q;
            cin >> q;
     
            vector < int > v(q);
            for(int &i : v)
                cin >> i;
     
            int mn = 0;
            int mx = 0;
     
            for(int j = 1; j < q; ++j)
            {
                if(v[j] < v[mn])
                    mn = j;
                if(v[j] > v[mx])
                    mx = j;
            }
     
            bool ok = 1;
            for(int j = 1; j < q; ++j)
                if(!(v[j-1] >= v[j]))
                {
                    ok = 0;
                    break;
                }
     
            if(ok)
                seq.push_back(make_pair(v[mn], v[mx]));
            else
                ++cnt;
     
        }
        ans += cnt*cnt;
        ans += seq.size()*2*cnt;
     
        sort(all(seq), [](pii &l, pii &r){
            return l.second < r.second;
        });
     
     
        for(int i = 0; i < seq.size(); ++i)
        {
            int l = -1, r = seq.size()-1;
            while(r - l > 1)
            {
                int mid = l + r >> 1;
     
                if(seq[i].first < seq[mid].second)
                    r = mid;
                else
                    l = mid;
            }
            int to_add = seq.size()-r;
            bool b = 0;
            if(i >= r && seq[i].first == seq[i].second) --to_add, b = 1;
            ans += to_add;
        }
        cout << ans;
        return 0;
    }