Để cài đặt các gói trên hệ điều hành Vinux, Vasya sử dụng Vum, trình quản lý gói hiện đại.
Mỗi gói có một số phiên bản có thể cài đặt. Mỗi ứng dụng chỉ có thể được cài một phiên bản tại một thời điểm. Ta gọi một phiên bản cụ thể của một ứng dụng cụ thể là một gói. Vì những phiên bản cụ thể của các ứng dụng khác nhau có thể không tương thích với nhau, Vum có khái niệm xung đột. Mỗi xung đột là một tập hợp các gói mà trong đó chỉ có thể cài nhiều nhất một gói. Cố gắng cài nhiều hơn một gói trong danh sách xung đột sẽ khiến hệ thống bị sập, và Vasya không muốn điều đó.
Các phiên bản khác nhau của một ứng dụng có thể xung đột hoặc không. Một xung đột có thể chứa nhiều phiên bản của cùng một ứng dụng, kể cả tất cả các phiên bản của ứng dụng đó.
Do hệ thống mô tả xung đột trong Vum khá thô sơ, mỗi gói chỉ có thể xuất hiện trong một xung đột.
Vasya muốn cài $N$ ứng dụng khác nhau mà không làm sập Vinux. Anh phải chọn các phiên bản ứng dụng mà không vi phạm những quy tắc trên, nhưng các thuật toán giải quyết phụ thuộc bằng vét cạn của Vum không xử lý nổi nhiệm vụ này. Vasya nhờ bạn giúp đỡ với trình quản lý gói của mình.
Dữ liệu vào
Dòng đầu tiên của tệp vào chứa số nguyên $N$ — số ứng dụng Vasya muốn cài ($1 \le N \le 200$).
$N$ dòng tiếp theo mô tả các ứng dụng, bao gồm danh sách phiên bản của chúng. Mô tả một ứng dụng gồm các trường sau, phân cách bằng dấu cách:
- tên ứng dụng — một xâu chữ cái Latinh viết thường, dài từ 1 đến 10 ký tự;
- số phiên bản — một số nguyên dương không vượt quá $1\,000$;
- các số hiệu phiên bản — các số nguyên dương được liệt kê theo thứ tự tăng dần.
Các số hiệu ứng dụng không vượt quá $100\,000$. Tất cả tên ứng dụng đều khác nhau.
Dòng tiếp theo chứa số $K$ — số xung đột ($0 \le K \le 500$).
$K$ dòng tiếp theo mô tả các xung đột. Mô tả một xung đột bắt đầu bằng số nguyên dương $T$ — số gói trong xung đột. Sau đó là $T$ gói phân cách bằng dấu cách. Với mỗi gói, tên ứng dụng được cho trước, tiếp theo là số hiệu phiên bản.
Đảm bảo rằng các gói được liệt kê trong các xung đột không bao giờ lặp lại và mọi phiên bản đều được nhắc đến trong mô tả ứng dụng.
Dữ liệu ra
Nếu không thể cài tất cả $N$ ứng dụng mà không có xung đột, dòng duy nhất của tệp ra phải chứa từ No. Nếu có thể, dòng đầu tiên phải chứa từ Yes, còn dòng thứ hai phải liệt kê các số hiệu phiên bản cần cài để đạt được điều đó, phân cách bằng dấu cách.
Các phiên bản của $N$ ứng dụng phải được in theo đúng thứ tự mô tả ứng dụng trong tệp vào. Nếu có nhiều cách chọn ứng dụng hợp lệ, hãy in một cách bất kỳ.
Ví dụ
Dữ liệu vào 1
3 vim 3 1 2 3 nano 2 5 8 python 2 2 3 2 2 vim 3 nano 8 3 vim 1 nano 5 vim 2
Dữ liệu ra 1
Yes 2 8 2
Dữ liệu vào 2
2 firefox 1 38 chrome 1 46 1 2 firefox 38 chrome 46
Dữ liệu ra 2
No
Ghi chú
Ví dụ đầu tiên chứa hai xung đột. Xung đột thứ nhất ngăn cài đồng thời phiên bản thứ 3 của vim và phiên bản thứ 8 của nano. Xung đột thứ hai quy định chỉ được cài một trong các gói sau — phiên bản thứ 1 của vim, thứ 5 của nano và thứ 2 của vim — hoặc không cài gói nào. Các lời giải đúng là:
1 8 21 8 32 8 22 8 33 5 23 5 3
Trong ví dụ thứ hai, có hai ứng dụng, mỗi ứng dụng chỉ có một phiên bản. Tuy nhiên, xung đột duy nhất cấm cài đồng thời cả hai ứng dụng.