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

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

4×n 타일링

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

요약
세로 4, 가로 N인 카펫을 1x3 타일과 3x1 타일로 빈틈없이 채우는 경우의 수를 1000000007로 나눈 나머지를 테스트 케이스마다 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

icpc 왕국에는 아주 못된 왕 유빈이가 있었다.

유빈이에게는 4×n 크기의 카펫이 하나 있었다. 유빈이는 신하들에게 이 카펫을 3×1 타일과 1×3 타일로 빈틈없이 메우라는 명령을 내렸다.

신하들을 도와 4×n 크기의 카펫을 3×1 타일과 1×3 타일로 메우는 방법의 수를 구하는 프로그램을 작성하시오. 타일끼리 겹치거나 카펫 밖으로 나가서는 안 되고, 두 종류 모두 원하는 만큼 쓸 수 있다.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤1001 \le T \le 100)

다음 TT개의 줄에 카펫의 가로 길이 NN이 한 줄에 하나씩 주어진다. 세로 길이는 항상 4이다. (1≤N≤100001 \le N \le 10000)

출력

각 테스트 케이스마다 카펫을 메우는 방법의 수를 10000000071000000007로 나눈 나머지를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    3
    3
    6
    3333
    
    예상 출력
    3
    13
    524313417
    
  2. 예제 2

    입력
    2
    1
    2
    
    예상 출력
    0
    0