Klocki

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

문제

바이타자르는 1,2,,n1, 2, \dots, n번으로 번호가 매겨진 nn개의 서랍에 똑같이 생긴 블록 kk개를 이리저리 옮기는 놀이를 좋아합니다. 각 서랍에는 블록이 최대 한 개만 들어가고, 항상 정확히 kk개의 서랍에 블록이 들어 있습니다. 따라서 하나의 배치는 {0,1}\{0, 1\}로 이루어진 길이 nn의 문자열로 나타낼 수 있고, 이 문자열에는 정확히 kk개의 11이 들어 있습니다. ii번째 자리가 11이면 ii번 서랍에 블록이 있다는 뜻이고, 00이면 없다는 뜻입니다.

한 번의 이동은 어떤 서랍에서 블록 하나를 꺼내 비어 있는 다른 서랍에 넣는 것이며, 이동을 하면 배치가 반드시 바뀝니다.

친구 바이톨리나가 놀이를 지켜보고 있는데, 이미 나온 적이 있는 배치가 다시 나타나는 순간 흥미를 잃고 자리를 뜹니다. 바이타자르는 친구를 최대한 오래 붙잡아 두기 위해, 다음 조건을 모두 만족하는 가장 긴 배치의 나열을 만들고 싶어 합니다.

  • 첫 번째를 제외한 각 배치는 바로 앞 배치에서 한 번 이동해 얻어집니다.
  • 첫 번째 배치와 마지막 배치는 서로 같습니다(처음 배치).
  • 그 외의 어떤 배치도 두 번 나타나지 않습니다.

처음 배치는 앞쪽 kk개의 서랍에 블록이 있는 상태입니다(즉 11kk개, 그 뒤에 00nkn - k개 오는 문자열).

이러한 나열이 가질 수 있는 최대 길이, 즉 나열에 등장하는 배치의 개수를 구하세요(처음 배치는 맨 앞에서 한 번, 맨 끝에서 다시 한 번, 모두 두 번 셉니다).

입력

한 줄에 두 정수 nnkk가 주어집니다 (1n311 \le n \le 31, 1kn1 \le k \le n).

출력

위 조건을 만족하는 가장 긴 배치 나열의 길이를 정수 하나로 출력하세요. 처음 배치는 맨 앞과 맨 끝에서 각각 한 번씩 셉니다.

예를 들어 n=4n = 4, k=2k = 2일 때, 네 서랍에 블록 두 개를 놓는 서로 다른 배치는 여섯 가지이고, 가장 긴 나열은 이 여섯 가지를 모두 지난 뒤 처음 배치로 돌아오므로 그 길이는 77입니다.