Busy Beaver의 4학년 마지막 학기 기말고사 기간이 다가왔고, 그는 신입생 오리엔테이션 때 받은 졸업 전 반드시 해야 할 활동 목록을 떠올렸습니다.
$N$개의 수로 이루어진 배열 $a_1, \ldots, a_N$이 주어지며, 여기서 $a_i$는 $i$번째 활동을 완료했을 때 얻는 즐거움을 나타냅니다.
MIT에서의 제한된 시간 때문에, 그는 이 활동들 중 연속된 부분 구간만을 완료하기로 했습니다. 또한, 최대한의 효과를 얻기 위해 해당 부분 구간은 최소 두 개 이상의 활동을 포함해야 합니다.
기말고사 준비를 미루던 중, 그는 부분 구간의 점수를 매기는 정교한 방법을 생각해 냈습니다. 인덱스 $l$부터 $r$까지의 부분 구간 점수는 해당 구간 내 서로 다른 두 활동의 XOR 값 중 최솟값입니다. 형식적으로, 인덱스 $l$부터 $r$까지의 부분 구간 점수는 $\min\limits_{l \leq i < j \leq r} a_i \oplus a_j$입니다.
Busy Beaver가 가장 좋아하는 숫자는 $K$이므로, 그는 점수가 $K$인 부분 구간의 개수를 계산하고 싶어 합니다. 그를 도와줄 수 있을까요?
입력
첫 번째 줄에는 두 정수 $N$과 $K$가 주어집니다 ($2 \le N \le 10^5$, $0 \le K < 2^{30}$).
두 번째 줄에는 $N$개의 공백으로 구분된 정수 $a_1, \dots, a_N$이 주어집니다 ($1 \le a_i < 2^{30}$).
출력
점수가 $K$인, 크기가 최소 두 개 이상인 연속된 부분 구간의 개수를 하나의 정수로 출력하십시오.
서브태스크
- ($15$점) $N \leq 5000$.
- ($10$점) $K = 0$.
- ($25$점) 배열 $a$는 오름차순으로 정렬되어 있습니다 ($a_{1} \leq \ldots \leq a_{N}$).
- ($50$점) 추가 제약 조건 없음.
예제
입력 1
5 2 1 3 1 4 5
출력 1
3
참고
다음 세 개의 부분 구간이 카운트되어야 합니다:
- $l = 1, r = 2$.
- $l = 2, r = 3$.
- $l = 2, r = 4$.