1. 双字典论滚解决
#include<bits/stdc++.h>

using namespace std;
int main(){
    int N,m;
    cin>>N;

    while(N--){

        cin>>m;
        int f,x,y;


        map<pair<int,int>,int> pre;//历史帧数
        map<pair<int,int>,int> now;//现在帧数

        int max_ = 0;

        for(int i =0; i< m;i++){
            cin>>f;

            for(int j =0; j< f;j++){
                cin>>x>>y;
                if(pre.count({x,y})){
                    now[{x,y}] = pre[{x,y}] + 1;//又出现了一次,就是老的加1
                }else{
                    now[{x,y}] = 1;//从来没有出现过
                }

                if(now[{x,y}]>max_){//时时更新任何一个连续帧
                    max_ = now[{x,y}];
                }
            }
            //如果这帧为0,那么就不会保留任何历史信息了,因为now在这轮没有任何内容。
            pre.clear();//清空历史,把now变为历史
            pre.swap(now);//now 置空,同时,now变成上一个,这样的话连续问题就可以解决


        }

        cout<<max_<<endl;


    }


    return 0;
}