import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int times = scanner.nextInt();
        for(int i=0;i<times;i++){
            //特征的行数
            /*
                循环输入,按List<List<Integer>>保存数据
            */
            int n = scanner.nextInt();
            List<List<Integer>> list = new ArrayList<>(n);
            for(int j=0;j<n;j++){
                int size = scanner.nextInt();
                List<Integer> sp = new ArrayList<>();
                for(int m = 0;m <size*2;m++){
                    sp.add(scanner.nextInt());
                }
                list.add(sp);
            }
            //将封装好List<List<Integer>>的数据进行处理
            /*
                数据输入的格式
                1
                8
                2 1 1 2 2
                2 1 1 1 4
                数据封装在List<List<Integer>>的格式
                1 1 2 2
                1 1 1 4
            */
            display(list);
        }
    }
     
    public static void display(List<List<Integer>> list){
        Map<String,Integer> map = new HashMap<>();
        map.put("max",0);
        //put 一个最大值
        for(int i=0;i<list.size();i++){
            //每一次遍历数组的2个值
            for(int j=0;j<list.get(i).size();j+=2){
                // 将key 以字符串的格式拼接
                String str = list.get(i).get(j)+"and"+list.get(i).get(j+1);
                int num = 0;
                /*
                    所有用例的输入特征总数和<100000
                     -->map value 的最大值不超过100000
                     所以以 最后出现的特征的行数 * 100000 + 已经连续的次数进行保存
                */
                if(map.get(str)!=null && map.get(str)/100000==i-1){//表示这个特征是连续的
                    // map.get(str)/100000==i-1 如果最后出现特征的行数是上一行 表示连续
                    num = map.get(str)%100000 + 1;
                    map.put(str,100000*i+num);
                    //将连续的次数加一 并换上新的行数
                }else{
                    //这个特征不是连续的,则默认初始化为一
                    map.put(str,100000*i+1);
                    num =1;//不管连续还是不连续都要与max 比较大小
                }
                if(map.get("max") < num){
                    map.put("max",num);
                }
            }
        }
        System.out.println(map.get("max"));
    }
     
}