atcoder#AGC061E. [AGC061E] Increment or XOR

[AGC061E] Increment or XOR

Score : 14001400 points

Problem Statement

There is a non-negative integer XX initially equal to SS. One can perform the following operations, in any order, any number of times:

  • Add 11 to XX. This has a cost of AA.
  • Choose ii between 11 and NN, and replace XX with XYiX \oplus Y_i. This has a cost of CiC_i. Here, \oplus denotes bitwise XOR\mathrm{XOR}.

Find the smallest total cost to make XX equal to a given non-negative integer TT, or report that this is impossible.

What is bitwise $\mathrm{XOR}$?

The bitwise $\mathrm{XOR}$ of non-negative integers $A$ and $B$, $A \oplus B$, is defined as follows:

  • When $A \oplus B$ is written in base two, the digit in the $2^k$'s place ($k \geq 0$) is $1$ if exactly one of the digits in that place of $A$ and $B$ is $1$, and $0$ otherwise.
For example, we have 3 \oplus 5 = 6 (in base two: 011 \oplus 101 = 110).
Generally, the bitwise \mathrm{XOR} of k non-negative integers p_1, p_2, p_3, \dots, p_k is defined as (\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k). We can prove that this value does not depend on the order of p_1, p_2, p_3, \dots, p_k.

Constraints

  • 1N81 \leq N \leq 8
  • 0S,T<2400 \leq S, T < 2^{40}
  • 0A1050 \leq A \leq 10^5
  • 0Yi<2400 \leq Y_i < 2^{40} (1iN1 \leq i \leq N)
  • 0Ci10160 \leq C_i \leq 10^{16} (1iN1 \leq i \leq N)
  • All values in the input are integers.

Input

Input is given from Standard Input in the following format:

NN SS TT AA

Y1Y_1 C1C_1

\vdots

YNY_N CNC_N

Output

If the task is impossible, print -1. Otherwise, print the smallest total cost.

1 15 0 1
8 2
5

You can make XX equal to TT in the following manner:

  • Choose i=1i=1 and replace XX with X8X \oplus 8 to get X=7X=7. This has a cost of 22.
  • Add 11 to XX to get X=8X=8. This has a cost of 11.
  • Choose i=1i=1 and replace XX with X8X \oplus 8 to get X=0X=0. This has a cost of 22.
3 21 10 100
30 1
12 1
13 1
3
1 2 0 1
1 1
-1
8 352217 670575 84912
239445 2866
537211 16
21812 6904
50574 8842
380870 5047
475646 8924
188204 2273
429397 4854
563645