#agc061e. [agc061_e]Increment or XOR

[agc061_e]Increment or XOR

問題文

非負整数 XX があり、はじめその値は SS です。以下の操作を任意の順に何度でも行うことができます。

  • XX11 を足す。この操作のコストは AA である。
  • 11 以上 NN 以下の ii を選び、XXXoplusYiX \\oplus Y_i に置き換える。この操作のコストは CiC_i である。ここで、oplus\\oplus はビット単位 mathrmXOR\\mathrm{XOR} 演算を表す。

与えられた非負整数 TTXX を等しくするのに必要な最小の合計コストを求めるか、それが不可能であることを報告してください。

ビット単位 mathrmXOR\\mathrm{XOR} 演算とは

非負整数 A,BA, B のビット単位 mathrmXOR\\mathrm{XOR}AoplusBA \\oplus B は、以下のように定義されます。

  • AoplusBA \\oplus B を二進表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。

例えば、3oplus5=63 \\oplus 5 = 6 となります(二進表記すると: 011oplus101=110011 \\oplus 101 = 110)。
一般に、kk 個の非負整数 p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k のビット単位 mathrmXOR\\mathrm{XOR} は $(\\dots ((p_1 \\oplus p_2) \\oplus p_3) \\oplus \\dots \\oplus p_k)$ と定義され、これは p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k の順番によらないことが証明できます。

制約

  • 1leqNleq81 \\leq N \\leq 8
  • 0leqS,T<2400 \\leq S, T < 2^{40}
  • 0leqAleq1050 \\leq A \\leq 10^5
  • 0leqYi<2400 \\leq Y_i < 2^{40} (1leqileqN1 \\leq i \\leq N)
  • 0leqCileq10160 \\leq C_i \\leq 10^{16} (1leqileqN1 \\leq i \\leq N)
  • 入力中の値は全て整数である。

入力

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

NN SS TT AA Y1Y_1 C1C_1 vdots\\vdots YNY_N CNC_N

出力

課題が達成不可能なら、-1 を出力せよ。 そうでないなら、必要な最小の合計コストを出力せよ。


入力例 1

1 15 0 1
8 2

出力例 1

5

以下の方法で XXTT と等しくすることができます。

  • i=1i=1 を選んで XXXoplus8X \\oplus 8 に置き換え、X=7X=7 とする。この操作のコストは 22 である。
  • XX11 を足し、X=8X=8 とする。この操作のコストは 11 である。
  • i=1i=1 を選んで XXXoplus8X \\oplus 8 に置き換え、X=0X=0 とする。この操作のコストは 22 である。

入力例 2

3 21 10 100
30 1
12 1
13 1

出力例 2

3

入力例 3

1 2 0 1
1 1

出力例 3

-1

入力例 4

8 352217 670575 84912
239445 2866
537211 16
21812 6904
50574 8842
380870 5047
475646 8924
188204 2273
429397 4854

出力例 4

563645