Vasya は Vinux OS にパッケージをインストールするため、現代的なパッケージマネージャ Vum を使っています。
各パッケージにはインストール可能な複数のバージョンがあります。同じアプリケーションのバージョンは一度に1つしかインストールできません。ある特定のアプリケーションの特定のバージョンをパッケージと呼ぶことにします。異なるアプリケーションの特定のバージョン同士が非互換であることがあるため、Vum には競合という概念があります。各競合はパッケージの集合で、その中からインストールできるのは高々1つです。競合リスト内の複数のパッケージをインストールしようとするとクラッシュしてしまい、Vasya はそれを望んでいません。
あるアプリケーションの異なるバージョン同士は、競合することも、しないこともあります。1つの競合に、あるアプリケーションの複数のバージョン、さらにはすべてのバージョンが含まれる場合もあります。
Vum の競合記述システムはかなり原始的なので、各パッケージは1つの競合にしか記載できません。
Vasya は Vinux をクラッシュさせることなく、$N$ 個の異なるアプリケーションをインストールしたいと考えています。上の規則を破らないようにアプリケーションのバージョンを選ぶ必要がありますが、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 を、2行目にそのためにインストールすべきバージョン番号を空白区切りで出力してください。
$N$ 個のアプリケーションのバージョンは、入力ファイルでアプリケーションが記述された順に出力しなければなりません。選び方が複数ある場合は、いずれか1つを出力してください。
入出力例
入力 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
注記
最初の例には2つの競合があります。1つ目の競合は vim の第 3 バージョンと nano の第 8 バージョンの同時インストールを禁止します。2つ目の競合は、vim の第 1 バージョン、nano の第 5 バージョン、vim の第 2 バージョンのうち1つだけをインストールできるか、何もインストールしないことを表します。正しい解は次のとおりです。
1 8 21 8 32 8 22 8 33 5 23 5 3
2つ目の例には2つのアプリケーションがあり、それぞれ1つのバージョンしかありません。しかし、唯一の競合によって両方のアプリケーションを同時にインストールすることが禁止されています。