import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // test cases
        for (int t = 0; t < n; t++) {
            int m = sc.nextInt(); // frames
            int max = 1;
            Map<String, Integer> motions = new HashMap<>();
            motions.put("max", 0);
            for (int i = 0; i < m; i++) {
                int f = sc.nextInt(); // features
                Set<String> hashes = new HashSet<String>();
                for (int j = 0;j < f; j++) {
                    String hash = String.valueOf(sc.nextInt()) + '_' + String.valueOf(sc.nextInt());
                    if (motions.containsKey(hash)) {
                        int times = motions.get(hash)+1;
                        motions.put(hash, times);
                        max = Math.max(max, times);
                    } else {
                        motions.put(hash, 1);
                    }
                    hashes.add(hash);
                }
                for (Map.Entry<String, Integer> entry : motions.entrySet()) {
                    if (!hashes.contains(entry.getKey())) {
                        motions.put(entry.getKey(), 0); //reset number if it stops repeating.
                    }
                }
            }
              
            System.out.println(max);
        }
    }
}

用了一个Set来清除中断的特征,hash用_来连接貌似不是最佳,有更好的建议么?