Ultimate A+B

시간 제한1초메모리 제한512 MB

문제

태윤이는 코딩 고수가 되고 싶다! 태윤이는 고수가 되기 위해 우선 백준 1000번 문제 A+B를 풀어보았다. 하지만 실행 결과가 이상했다. A+B의 결과로 매번 다른 값이 출력되는 것이다! 오류를 해결하지 못한 태윤이는 A+B 문제는 잠시 미뤄두고, 대신 백준 1001번 문제 A-B와 10998번 문제 A×B를 풀어보았다. 그러나 이 문제들에서도 같은 버그가 발생했다.

이 세 문제는 두 개의 정수 $A$, $B$를 입력받아 각각 $A+B$, $A-B$, $A \times B$의 결과를 출력하는 문제이다. 하지만 태윤이가 작성한 세 코드는 매번 다른 결과를 출력했다. 태윤이는 이 버그를 해결하기 위해 디버깅을 하던 도중, 세 코드의 출력값에 $E$를 넘지 않는 랜덤한 오차가 발생한다는 사실을 알아냈다. 여기서 오차 범위 $E$는 세 코드의 출력값과 실제값의 차이가 최대 $E$라는 것을 의미한다. 즉, $0 \leq |출력값 - 실제값| \leq E$이다. (오차 범위 $E$와 코드의 출력값은 정수이다.)

태윤이는 버그를 해결하기 위해 임의의 양의 정수 $A$, $B$를 정해 세 코드에 입력하고, 그 출력값을 바탕으로 가능한 $(A, B)$ 값을 역추적해 보기로 했다. 오차 때문에 $A$와 $B$의 값을 하나로 특정할 수는 없지만, 가능한 모든 $(A, B)$ 쌍을 찾을 수는 있다.

태윤이가 버그를 고칠 수 있도록 주어진 세 코드의 실행 결과와 오차 범위 $E$를 바탕으로 가능한 모든 순서쌍 $(A, B)$의 개수를 구해보자.

입력

첫째 줄에 태윤이가 연산을 한 횟수 $N(1 \leq N \leq 100\,000)$과 오차 $E(0 \leq E \leq 10^9)$가 공백으로 구분되어 주어진다.

다음 $N$개 줄에는 연산의 종류 $R_i$와 연산의 결과값 $K_i(|K_i| \leq 10^9)$가 공백으로 구분되어 주어진다. $R_i$가 각각 $1,\, 2,\, 3$일 때 $A+B,\, A-B,\, A \times B$ 연산했음을 의미한다. 가능한 순서쌍이 없는 입력은 주어지지 않는다.

출력

$A$와 $B$의 값으로 가능한 모든 순서쌍 $(A, B)$의 개수를 출력한다. 단, $A$와 $B$는 양의 정수이다. 개수가 무한히 많으면 -1을 출력한다.

힌트

예제 1의 경우 $(1, 4)\ (2, 2)\ (2, 3)\ (3, 2)$로 4개이다.