Vasya 使用現代套件管理器 Vum,在 Vinux 作業系統中安裝套件。
每個套件都有數個可安裝的版本。同一個應用程式一次只能安裝其中一個版本。我們將某個應用程式的某個具體版本稱為一個套件。由於不同應用程式的某些版本可能互不相容,Vum 中存在衝突這個概念。每個衝突都是一個套件集合,其中至多能安裝一個套件。如果嘗試安裝同一個衝突清單中的多個套件,系統就會當機,Vasya 不希望發生這種情況。
同一個應用程式的不同版本之間可能存在衝突,也可能不存在。一個衝突中可以包含同一應用程式的多個版本,甚至包含它的所有版本。
由於 Vum 的衝突描述系統相當原始,每個套件只能出現在一個衝突中。
Vasya 希望安裝 $N$ 個不同的應用程式,同時不讓他的 Vinux 當機。他必須在不違反上述規則的情況下選擇應用程式的版本,但 Vum 窮舉相依關係的解析演算法無法處理這個任務。Vasya 請你幫助他解決套件管理器的問題。
輸入格式
輸入檔案的第一行包含一個整數 $N$,表示 Vasya 希望安裝的應用程式數量($1 \le N \le 200$)。
接下來的 $N$ 行給出應用程式的描述,其中包含版本清單。一個應用程式的描述由以下以空格分隔的欄位組成:
- 應用程式名稱:由小寫拉丁字母組成的字串,長度為 1 到 10 個字元;
- 版本數量:不大於 $1\,000$ 的正整數;
- 版本號:按遞增順序排列的正整數。
應用程式的編號不大於 $100\,000$。所有應用程式名稱互不相同。
接下來一行包含數 $K$,表示衝突的數量($0 \le K \le 500$)。
接下來的 $K$ 行描述衝突。每個衝突的描述以正整數 $T$ 開頭,表示該衝突中的套件數量。隨後列出 $T$ 個以空格分隔的套件。每個套件先給出應用程式名稱,再給出版本號。
保證衝突中列出的套件不會重複,且所有版本都在應用程式的描述中出現過。
輸出格式
如果無法在沒有衝突的情況下安裝全部 $N$ 個應用程式,輸出檔案的唯一一行必須包含單字 No。如果可以,第一行必須包含單字 Yes,第二行必須列出為此應安裝的版本號,以空格分隔。
這 $N$ 個應用程式的版本必須按應用程式在輸入檔案中的描述順序輸出。如果有多種可行的選擇方式,輸出任意一種。
範例
輸入格式 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
輸出格式 1
Yes 2 8 2
輸入格式 2
2 firefox 1 38 chrome 1 46 1 2 firefox 38 chrome 46
輸出格式 2
No
說明
第一個範例包含兩個衝突。第一個衝突禁止同時安裝 vim 的第 3 個版本和 nano 的第 8 個版本。第二個衝突表示,vim 的第 1 個版本、nano 的第 5 個版本和 vim 的第 2 個版本中,只能安裝其中一個,或者一個也不安裝。正確的方案如下:
1 8 21 8 32 8 22 8 33 5 23 5 3
第二個範例有兩個應用程式,每個應用程式只有一個版本。然而,唯一的衝突禁止同時安裝這兩個應用程式。