#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;
}