Tại thành phố ABC có ~T~ cơ quan để đảm nhận các nhiệm vụ quan trọng của thành phố. Hiện tại, mỗi cơ quan đang thực hiện một số công việc được giao. Tuy nhiên, do có sự chồng chéo trong việc phân công, một số công việc đang được nhiều cơ quan thực hiện đồng thời. Điều này dẫn đến lãng phí nguồn lực và giảm hiệu quả hoạt động. Để chuẩn bị phân công lại công việc, chính quyền thành phố đánh giá cơ quan có ít công việc hơn sẽ giải quyết nhanh hơn so với các cơ quan còn lại nên sẽ ưu tiên giữ lại các nhiệm vụ đã phân công cho cơ quan này. Chính quyền thành phố yêu cầu phân công lại công việc theo các quy tắc sau:
- Mỗi công việc chỉ được thực hiện bởi một cơ quan duy nhất, và số lượng công việc của các cơ quan sau khi phân công lại phải được cân bằng một cách tối ưu, ưu tiên giữ lại công việc cho cơ quan ban đầu được phân công ít công việc hơn. Nếu một cơ quan không còn công việc nào, cơ quan đó sẽ bị giải thể để tiết kiệm nguồn lực;
- Quy tắc chuyển công việc: Nếu một công việc ~X~ thuộc cả hai cơ quan A và B, thì công việc ~X~ sẽ được chuyển từ A sang B nếu:
- Cơ quan B ban đầu được phân công ít công việc hơn A.
- Nếu cả hai cơ quan có cùng số lượng công việc ban đầu, cơ quan B được phân công sớm hơn A (xuất hiện trước trong danh sách phân công).
Ban đầu, đề bài phát biểu các quy tắc chuyển công việc rất thiếu chặt chẽ: giả sử tồn tại hai cơ quan A và B có cùng số lượng công việc ban đầu và có một công việc ~X~ nằm trong danh sách công việc của cả A và B (~X~ không nằm trong danh sách công việc của cơ quan nào khác nữa) thì thử hỏi cuối cùng ~X~ sẽ được chuyển cho cơ quan nào??? Điều này khiến tôi phải thêm vào một quy tắc nữa: "Nếu cả hai cơ quan có cùng số lượng công việc ban đầu, cơ quan B được phân công sớm hơn A (xuất hiện trước trong danh sách phân công)" thì B sẽ nhận được công việc ~X~. Ví dụ 2 được tôi bổ sung vào để làm rõ ý này.
Yêu cầu
Em hãy viết chương trình để giúp chính quyền phân công lại các nhiệm vụ đã phân công cho các cơ quan.
Dữ liệu đầu vào
Gồm ~T + 2~ dòng:
- Dòng đầu ghi số nguyên dương ~T~ ~(1 \le T \le 10^5)~.
- Dòng thứ hai là dãy số ~N~ gồm ~T~ số nguyên tương ứng số công việc được phân công của lần lượt các cơ quan với ~N_i \le 100~.
- Dòng thứ ~i~ trong ~T~ dòng tiếp theo, mỗi dòng ghi dãy số nguyên dương ~X~ ~(1 \le X_j \le 100;\ 1 \le j \le 100)~ là các công việc của cơ quan ~i~.
Dữ liệu đầu ra
Gồm nhiều dòng:
- Dòng đầu ghi số cơ quan sau khi phân công lại.
- Các dòng tiếp theo: số đầu tiên ghi số thứ tự ban đầu của cơ quan, các số còn lại là các công việc của các cơ quan sẽ được phân công.
Lưu ý: Xuất theo số thứ tự cơ quan tăng dần, danh sách công việc được đánh số tăng dần.
Ràng buộc dữ liệu
- Có 20% số điểm tương ứng với 20% số test có ~T \le 5;\ N_{i} \le 10;\ X_{j} \le 50~.
- Có 30% số điểm tương ứng với 30% số test có ~T \le 10;\ N_{i} \le 50;\ X_{j} \le 100~.
- Có 50% số điểm tương ứng với 50% số test có ~T \le 10^5;\ N_{i} \le 100;\ X_{j} \le 100~.
Ví dụ
Ví dụ 1
INPUT
3
3 2 1
1 2 3
2 3
2
OUTPUT
3
1 1
2 3
3 2
Ví dụ 2
INPUT
3
3 2 2
3 1 2
2 4
4 3
OUTPUT
3
1 1
2 2 4
3 3
Bình luận