아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

득수 밥 먹이기

면접 대비

시간 제한1초메모리 제한512 MB

요약
식당 네 곳 중 하나에서 하루 한 번 식사하거나 굶을 수 있고, 오늘 간 식당과 이웃 식당은 다음 날 가지 못할 때 N일 치 식단표의 경우의 수를 구한다.
난이도

보통10점 중 5점

유형
동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

프로젝트 하느라 바쁜 득수는 밥 먹을 시간이 부족하다. 그래서 주로 찾는 식당 네 개 중 하나에서 하루에 한 번 밥을 먹는다. 귀찮으면 굶을 때도 있다.

늘 새로운 느낌을 받고 싶었던 득수는 다음과 같은 규칙으로 다음날 갈 식당을 정한다.

  • 첫날에는 굶거나, 임의로 원하는 식당 하나를 골라서 간다.
  • 어제 굶지 않았다면, 오늘은 식당을 가지 않아도 된다.
  • 어제 식당을 가지 않았다면, 오늘은 식당을 가서 밥을 먹어야 한다.
  • 오늘 간 식당은 다음날 가지 않는다.
  • 오늘 간 식당과 이웃한 식당은 다음날 가지 않는다.

만약 2번 식당을 오늘 갔다면, 다음날 11, 22, 33번 식당은 가지 않는다. 따라서 새로운 느낌을 받으려면 44번 식당을 가거나 굶어야 한다.

득수가 NN일 치 식단표를 만들려고 한다. 위 규칙을 따라 식단표를 만들 때 가능한 경우의 수를 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에는 득수가 만들어야 하는 점심 식단의 총 날짜 NN이 입력으로 들어온다. (1≤N≤200,000)(1 \le N \le 200\\,000)

출력

NN일 치 식단표를 만들 때 가능한 경우의 수를 1,000,000,007(=109+7)1\\,000\\,000\\,007(=10^9+7)로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    1
    
    예상 출력
    5
    
  2. 예제 2

    입력
    2
    
    예상 출력
    14