아 또 XOR이야?

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

허구한 날 나와서 지루해 죽겠는 XOR 문제가 또 나와버렸다!

정수 NN, KK, AA, BB가 주어진다. AA 이상 BB 이하의 정수 중 NN과 Bitwise XOR 연산을 수행했을 때, 이진수 표기에 11이 정확히 KK개 등장하는 수의 개수를 세어보자.

입력

첫 번째 줄에 NN, KK, AA, BB가 차례대로 공백을 사이에 두고 주어진다.

출력

정답을 출력한다.

제한

  • 1N2601 \le N \le 2^{60}
  • 0K600 \le K \le 60
  • 1AB2601 \le A \le B \le 2^{60}

힌트

Bitwise XOR은 두 음이 아닌 정수에 대해 수행할 수 있는 연산이다. 음이 아닌 정수 AABB에 대해, AABB를 이진수로 나타낸 다음 각 비트별로 서로 같으면 00, 다르면 11을 대응하는 비트로 한 것이 XOR의 결과인 ABA \oplus B가 된다. 예를 들어 A=10A=10, B=6B=6을 생각해 보자. AABB는 각각 이진수로 표현하면 1010_21010\_20110_20110\_2이다. 작은 쪽에서부터 첫 번째와 두 번째 비트는 서로 같기 때문에 00, 세 번째와 네 번째 비트는 서로 다르기 때문에 11이 되어 ABA \oplus B1100_2=121100\_2 = 12가 된다.