2 x n 직사각형을 1x1 정사각형, 2x1 직사각형, L 트로미노로 덮는 모든 경우의 수를 세고, 각 조각이 전체에서 몇 개 쓰였는지 합을 구한다.
보통6동적 계획법조합론비트 연산구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB퀜도르에서는 보도와 복도의 폭이 언제나 2mb로 고정되어 있다. mb는 미니블로이트를 줄인 단위로, 1블로이트의 약 1/2000이다. 은행마다 새 보도를 깔기로 한 J. 피어폰트 플랫헤드는 공사를 프로보즈 매직 페이버 사에 맡기면서 무늬를 직접 고르겠다고 했다. 보도가 워낙 많아서 프로보즈는 보도 하나를 빈틈없이 덮는 방법을 모두 세는 프로그램부터 만들기로 했다.
쓸 수 있는 블록은 세 종류다.

블록은 보도 밖으로 나갈 수 없고 서로 겹칠 수도 없으며, 보도의 모든 칸이 정확히 한 블록에 덮여야 한다. 블록을 놓은 자리가 한 곳이라도 다르면 서로 다른 방법으로 센다.
예를 들어 2×1 보도를 덮는 방법은 2가지이고, 두 방법에서 쓰인 블록을 모두 합하면 1×1 정사각형 2개와 2×1 직사각형 1개다.

2×2 보도를 덮는 방법은 11가지이고, 열한 방법에서 쓰인 블록을 모두 합하면 1×1 정사각형 16개, 2×1 직사각형 8개, 트로미노 4개다.

세로 2mb, 가로 nmb인 보도의 길이 n이 주어진다. 이 보도를 덮는 방법의 수와, 그 모든 방법에서 쓰인 블록의 종류별 총 개수를 구하는 프로그램을 작성하라. 종류별 개수는 방법 하나가 아니라 모든 방법에 걸쳐 더한 값이다.
첫째 줄에 데이터 집합의 개수 P가 주어진다. (1≤P≤10000)
다음 P개 줄에는 데이터 집합이 한 줄에 하나씩 주어진다. 각 줄에는 데이터 집합 번호 K와 보도의 길이 n이 공백 하나를 사이에 두고 주어진다. (1≤K≤10000, 1≤n≤14)
데이터 집합은 서로 독립이며 모두 같은 방식으로 처리한다. n의 상한은 다섯 개의 출력 값이 모두 부호 없는 32비트 정수 범위에 들어가도록 정해진 값이다.
데이터 집합마다 한 줄씩 정수 다섯 개를 공백 하나로 구분해 출력한다. 차례대로 데이터 집합 번호 K, 2×n 보도를 덮는 방법의 수, 그 방법들에서 쓰인 1×1 정사각형의 총 개수, 2×1 직사각형의 총 개수, 트로미노의 총 개수다.