부러운 지수

N과 k가 주어질 때, 이진수로 표현했을 때 1이 정확히 k개인 수 중 N보다 큰 최솟값을 구한다.

보통7비트 연산그리디수학구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

앨리스와 밥에게는 정수 NN이 하나 있다. 두 사람은 이 정수가 마음에 들지 않는다. 어젯밤 칵테일 파티에 갔다가 다른 커플이 똑같은 정수를 쓰고 있다는 사실을 알았기 때문이다. 그래서 두 사람은 새 정수를 하나 장만하기로 했다.

밥은 다른 커플에게 깊은 인상을 주고 싶어서, 새 정수가 NN보다 반드시 커야 한다고 생각한다.

앨리스는 정수 kk를 유난히 좋아한다. 그래서 어떤 정수를 고르든 서로 다른 2의 거듭제곱 kk개의 합으로 쓸 수 있어야 한다고 생각한다.

밥은 구두쇠이기도 해서 돈을 되도록 적게 쓰고 싶어 한다. 정수의 값이 클수록 값도 비싸지므로, 밥은 조건을 만족하는 정수 중 가장 작은 것을 원한다.

입력

첫째 줄에 정수 NNkk가 공백으로 구분되어 주어진다. (1N10181 \le N \le 10^{18}, 1k601 \le k \le 60)

출력

NN보다 크면서 서로 다른 2의 거듭제곱 정확히 kk개의 합으로 나타낼 수 있는 가장 작은 정수 MM을 출력한다.