C - 君の力に Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 500

ストーリー

駅に着いた僕が見たのは、異形と戦ういろはちゃんだった。まるで舞っているかのように動き回り、敵を翻弄している。

それでも、一向に異形の勢いは衰えない。敵の数が多すぎる。僕も、見てるだけじゃダメだ。君の、力に!

問題文

今、敵が M 体いて、 i 番目の敵は最初はあなたのいるところから x_i+0.5 だけ離れたところにいますが、1 秒ごとに 1 だけあなたに近づきます。敵との距離が 0 になるとあなたは死んでしまいます。厳密には、距離が 0.5 の敵にさらに近づかれたときあなたは死んでしまいます。
また、それぞれの敵は01からなる固有の文字列を持っており、 i 番目の敵が持っている文字列は s_iです。

あなたはぶきを持っており、ぶきも01からなる文字列 Sを持っています。 あなたはそのぶきを使って、次の 2 つのことができます。

  • 一番自分に近い敵を倒す。ただし、敵の持つ文字列よりぶきの持つ文字列のほうが辞書順で大きくなければならない。
  • 1 秒間かけてぶきに魔法をかけ、文字列を変更する。

ただし、攻撃にかかる時間は十分小さく、無視できるものとします。また、どちらの行動においてもあなたは最初にいた場所から移動することはありません。

あなたが使える魔法は、あなたのぶきの持つ文字列を、次のように変更します。

  • 文字列の先頭に02 つ加える。
  • それぞれの文字の下に、右隣と左隣の数字が等しいなら0、異なるなら1を書く。ただし、右隣か左隣のどちらかの文字が存在しない場合は何も書かない。
  • 下に書かれた文字列を、新しい文字列とする。

例えば、あなたのぶきが文字列1101を持っているときに魔法を使用すると、以下のようにして新しい文字列は1110となります。

M 体の敵の情報と、あなたのぶきが最初に持つ文字列 S が与えられるので、あなたが無事に生き残ることができるか判定してください。

制約

  • 0 \leq M \leq 10^5
  • 0 < x_1 \leq x_2 \leq \dots \leq x_M \leq 10^{18}
  • 1 \leq |s_i| (i=1,2,\dots,M)
  • \displaystyle\sum_{i=1}^M |s_i| \leq 10^5
  • 1 \leq |S| \leq 10^5
  • s_i および S はすべて0または1からなる文字列

入力

入力は以下の形式で標準入力から与えられます。

S
M
x_1 s_1
x_2 s_2
:
x_M s_M

出力

すべての敵を、距離が 0 になる前に倒すことができるなら Yes 、できないなら No と出力してください。


入力例 1

1101
2
1 1001
2 1101

出力例 1

Yes

以下のようにして、すべての敵を倒すことができます。

  • 一番近い敵を倒す。
  • 1 秒かけてぶきに魔法をかける。ぶきの持つ文字列は1110となる。敵が 1 近づく。
  • 一番近い敵を倒す。

入力例 2

1101
2
1 1001
2 1110

出力例 2

No

敵を倒すとき、ぶきの持つ文字列の方が辞書順で大きくなければなりません。


入力例 3

1111
4
1 1
2 011
3 1100
7 0000001

出力例 3

Yes

1 度も魔法を使わなくても全ての敵を倒せることもあります。


入力例 4

00000000
1
1000000000000000000 1

出力例 4

No

何度魔法を使っても倒せない敵がいることもあります。


入力例 5

0110011000
10
1 100
2 0111
3 0000
5 1
5 0
6 0000001
7 11
7 00
8 00
9 0101

出力例 5

No

解説

解説