만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

여우의 꿈

시간 제한2초메모리 제한1024 MB

요약
모든 원판이 K번 기둥에 쌓인 상태에서 각 원판을 목표 기둥에 놓는 최소 이동 횟수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
재귀, 수학
정답자
아직 제출이 없습니다

문제

여우 마을에는 기둥 3개와 원판 NN개로 이루어진 하노이 탑의 원판을 한 기둥에 모두 모으면 소원이 이루어진다는 전설이 있다.

하노이 탑의 원판은 다음 규칙에 따라 옮긴다.

  • ii번째 원판의 반지름은 ii이다. (1≤i≤N1 \le i \le N)
  • 어떤 시점에서든 한 기둥 안의 원판은 반지름이 작을수록 위에 오도록 정렬되어 있어야 한다.
  • 각 기둥의 가장 위에 있는 원판만 옮길 수 있다.
  • 원판은 기둥의 맨 위로만 옮길 수 있다.
  • 원판은 한 번에 한 개만 옮길 수 있다.

여우 마을에 사는 아기 여우는 어느 날 이 소문을 듣고 하노이 탑에 도전하기로 했다. 아기 여우는 모든 원판을 KK번째 기둥에 모으는 데 성공했고, 소원을 빌었다.

"세상에서 가장 귀여운 여우가 되게 해주세요!"

하지만 아기 여우에게는 아무런 변화도 일어나지 않았다.

실망한 아기 여우는 이번에는 자신이 생각하기에 아름다운 모양으로 원판을 배치해 보기로 했다. 이제는 하노이 탑의 고수가 된 아기 여우는 1초에 원판을 한 개 옮길 수 있다. 아기 여우가 원판을 아름다운 모양으로 배치하는 데 걸리는 최소 시간을 구하라.

입력

첫 번째 줄에 NN과 KK가 공백을 사이에 두고 입력된다. (1≤N≤10000001 \le N \le 1000000; 1≤K≤31 \le K \le 3)

두 번째 줄에 NN개의 수가 공백을 사이에 두고 입력된다. ii번째 수 aia_i는 아름다운 모양에서 ii번째 원판이 몇 번째 기둥에 있는지를 나타낸다. (1≤ai≤31 \le a_i \le 3)

아기 여우가 생각한 아름다운 모양은 하노이 탑의 규칙을 만족한다.

출력

첫 번째 줄에 아기 여우가 아름다운 모양을 만드는 데 걸리는 최소 시간(초)을 109+710^{9} + 7로 나눈 나머지를 출력한다. 109+710^{9} + 7은 소수이다.

아름다운 모양을 만드는 것이 불가능하면 -1을 출력한다.

힌트

여우 마을의 전설은 사실일까?

예제3

  1. 예제 1

    입력
    3 3
    2 3 2
    
    예상 출력
    6
    
  2. 예제 2

    입력
    9 2
    3 1 1 2 2 3 2 2 2
    
    예상 출력
    57
    
  3. 예제 3

    입력
    1 1
    1
    
    예상 출력
    0