#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for (int i = a; i < b; ++i)
int sol(){
    int n;
    using Vpair = string;
    unordered_set<Vpair> uset_pre;
    unordered_set<Vpair> uset_cur;
    unordered_map<Vpair, int> umap;
    cin >> n;
    int ans = INT_MIN;
    rep(i, 0, n){
        int m;
        cin >> m;
        rep(j ,0, m){
            int x,y;
            cin >> x >> y;
            Vpair item = to_string(x) + "+" + to_string(y);
            if(uset_pre.count(item)){
                ++umap[item]; //有则加1
            }else{
                umap[item] = 1; //无则置1
            }
            ans = max(umap[item],ans);
            uset_cur.insert(item);
        }
        uset_pre.clear();
        uset_pre.insert(uset_cur.begin(),uset_cur.end());
        uset_cur.clear();
    }
    return ans;
}


int main(){
    int n_data;
    cin >> n_data;
    rep(i, 0, n_data){
        cout << sol() << endl;
    }
    return 0;
}