#icpc2014summerday4g. [icpc2014summer_day4_g]リサイクル

[icpc2014summer_day4_g]リサイクル

MathJax.Hub.Config({ tex2jax: { inlineMath: [["","",""], ["\\(","\\)"]], processEscapes: true }}); blockquote { font-family: Menlo, Monaco, "Courier New", monospace; color: #333333; display: block; padding: 8.5px; margin: 0 0 9px; font-size: 12px; line-height: 18px; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; white-space: pre; white-space: pre-wrap; word-break: break-all; word-wrap: break-word; }

Problem Statement

コンテスト中は下記の問題文で出題されましたが、ジャッジ解では同時に複数個アイテムを所持しなければいけない場合を見逃していました。このケースに対して今回の問題の制約で時間内に解くことはおよそ不可能だと思われます。不適切な出題となって申し訳ありませんでした。

当問題担当者としては、下記問題に対して「同時に所持できるアイテムが1個である」という制約を入れれば適切な出題となったと考えています。(9/15 17:47)

中野さんの住む世界では,自分の作った道具で穴を掘り,洞窟を探検することがブームになっている.

道具は MM 種類存在し,鉄鉱石を加工することで作ることができる. いくつかの道具は鉄鉱石だけで作ることができるが,道具によっては鉄鉱石に加え,別の道具を利用しないと作れないものもある. また,一部の道具は,いったん他の道具の作成に使うと壊れてしまい,そのままでは利用できなくなる.

壊れているかいないかに関わらず,道具を分解すると鉄鉱石に戻り,他の道具の材料として再利用できる. ただし,分解によって得られる鉄鉱石の量は,その道具を作るのに必要とした鉄鉱石の量よりも減ってしまう.

中野さんは探検のためにどうしても欲しい道具があり,今持っている NN 個の鉄鉱石から作れないかと考えている. 残念なことに,中野さんの住む世界では,特別な道具がないとコンピュータを作ることができない. あなたの仕事は,中野さんの代わりに,欲しい道具が作れるかどうかを判定することである.


Input

入力は以下の形式で与えられる.

MM NN KK
a_1a\_1 b_1b\_1 c_1c\_1 d_1d\_1
s_1,1s\_{1,1} v_1,1,1v\_{1,1,1} v_1,1,2v\_{1,1,2} ... v_1,1,s_1,1v\_{1,1,s\_{1,1}}
s_1,2s\_{1,2} v_1,2,1v\_{1,2,1} v_1,2,2v\_{1,2,2} ... v_1,2,s_1,2v\_{1,2,s\_{1,2}}
:
:
s_1,d_1s\_{1,d\_{1}} v_1,d_1,1v\_{1,d\_{1},1} v_1,d_1,2v\_{1,d\_{1},2} ... v_1,d_1,s_1,d_1v\_{1,d\_{1},s\_{1,d\_{1}}}
a_2a\_2 b_2b\_2 c_2c\_2 d_2d\_2
:
:
a_Ma\_M b_Mb\_M c_Mc\_M d_Md\_M
s_M,1s\_{M,1} v_M,1,1v\_{M,1,1} ... v_M,1,s_M,1v\_{M,1,s\_{M,1}}
:
:
s_M,d_Ms\_{M,d\_{M}} v_M,d_M,1v\_{M,d\_{M},1} v_M,d_M,2v\_{M,d\_{M},2} ... v_M,d_M,s_M,d_Mv\_{M,d\_{M},s\_{M,d\_{M}}}

1行目には,3つの数 M,N,KM, N, K が与えられる. MM は作れる道具の種類数,NN は中野さんが持っている鉄鉱石の数,KK は中野さんが手に入れたい道具の番号である.

続く行には,1番目から MM 番目までの道具の情報が順番に与えられる. 各道具の情報は,a_ia\_i, b_ib\_i, c_ic\_i, d_id\_i の4つの数を含む行から始まる. a_ia\_i はこの道具を作成するために必要な鉄鉱石の個数, b_ib\_i はこの道具を分解した時に得られる鉄鉱石の個数を表す.

c_i=0c\_i = 0 のとき,ii 番目の道具は1回使うと壊れてしまう. c_i=1c\_i = 1 のときは,何回でも使うことができる.

続く d_id\_i 行には,この道具を作るために必要となる道具の組み合わせが,1行に1つ与えられる. これらの行は,必要な道具の個数 s_i,js\_{i,j} から始まり,s_i,js\_{i,j} 個の数 v_i,j,1,v_i,j,2,cdots,v_i,j,s_i,jv\_{i,j,1}, v\_{i,j,2}, \\cdots, v\_{i,j,s\_{i,j}} がその後に続く. v_i,j,kv\_{i,j,k} は,道具 ii を作るために必要となる道具の組み合わせである. これらの道具をすべて所持していないと,ii 番目の道具を作成することはできない. また, d_id\_i 個の組み合わせのうち,どれか1つでも満たしていれば,道具 ii を作ることができる. d_i=0d\_i = 0 のとき,道具 ii は他の道具を使わずに作ることができる.

Constraints

  • 1leMle181 \\le M \\le 18
  • 0leNle1060 \\le N \\le 10^6
  • 1leKleM1 \\le K \\le M
  • 1leb_i<a_ile1061 \\le b\_i < a\_i \\le 10^6
  • 0led_ile30 \\le d\_{i} \\le 3
  • 1lev_i,j,kleM1 \\le v\_{i,j,k} \\le M
  • $v\_{i,j,k} \\neq v\_{i,j,k'} \\quad\\text{if}\\, k \\neq k'$

Output

KK 番目の道具が作成可能なら yes ,そうでないなら no と出力せよ.


Sample Input 1

4 10 4
4 3 0 0
4 3 0 0
2 1 0 1
1 2
2 1 0 1
2 1 3```

### Output for the Sample Input 1

```plain
yes```

* * *

### Sample Input 2

```plain
4 8 4
4 3 1 0
4 3 0 0
2 1 0 1
1 2
2 1 0 1
2 1 3```

### Output for the Sample Input 2

```plain
no```

* * *

### Sample Input 3

```plain
4 8 4
4 3 1 0
4 3 0 0
2 1 0 2
1 1
1 2
2 1 0 1
2 1 3```

### Output for the Sample Input 3

```plain
yes```

* * *

### Sample Input 4

```plain
5 10 4
5 4 1 0
5 1 1 0
5 1 0 1
1 2
6 1 0 2
1 5
2 3 1
3 2 0 1
1 1```

### Output for the Sample Input 4

```plain
yes```

* * *

### Sample Input 5

```plain
2 10 2
5 1 0 1
1 2
5 1 0 1
1 1```

### Output for the Sample Input 5

```plain
no```

* * *