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

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

단어

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

요약
주어진 k_i들에 대해 h^{k_i}(0)를 이어 붙인 문자열이 어떤 h^m(0)의 부분 문자열인지 판정한다.
난이도

어려움10점 중 8점

유형
문자열, 동적 계획법, 그리디, 재귀
정답자
아직 제출이 없습니다

문제

hh는 숫자 0과 1로 이루어진 이진 문자열에 작용하는 함수입니다. 이 함수는 문자열의 모든 0을 1로, 모든 1을 10으로 동시에 그리고 서로 독립적으로 바꿉니다. 예를 들어 hh는 1001을 101110으로 보내고, 빈 문자열은 빈 문자열로 보냅니다. hh는 단사(일대일) 함수입니다.

hkh^k는 hh를 kk번 합성한 함수를 뜻하며, h0h^0은 항등함수입니다 (h0(w)=wh^0(w) = w).

k=0,1,2,…k = 0, 1, 2, \ldots에 대한 문자열 hk(0)h^k(\texttt{0})을 생각합니다. 처음 몇 개는 다음과 같습니다.

0, 1, 10, 101, 10110, 10110101

문자열 xx가 문자열 yy 안에 연속된 한 덩어리로 나타나면 xx를 yy의 부분 문자열이라고 합니다. 정수 k1,k2,…,knk_1, k_2, \ldots, k_n이 주어집니다. 다음과 같이 이어 붙인 문자열

hk1(0) hk2(0)⋯hkn(0)h^{k_1}(\texttt{0})\, h^{k_2}(\texttt{0}) \cdots h^{k_n}(\texttt{0})

이 어떤 m≥0m \ge 0에 대한 hm(0)h^m(\texttt{0})의 부분 문자열인지 판정하세요.

입력

첫 번째 줄에 시험 단위의 개수를 나타내는 정수 tt (1≤t≤131 \le t \le 13)가 주어집니다.

각 시험 단위는 두 줄로 이루어집니다. 첫 줄에는 정수 nn (1≤n≤1000001 \le n \le 100000)이, 둘째 줄에는 공백 하나로 구분된 nn개의 음이 아닌 정수 k1,k2,…,knk_1, k_2, \ldots, k_n이 주어집니다. 이 둘째 줄에 있는 정수들의 합은 1000000010000000을 넘지 않습니다.

출력

각 시험 단위마다 한 줄씩, 모두 tt개의 줄을 출력합니다. 이어 붙인 문자열 hk1(0)⋯hkn(0)h^{k_1}(\texttt{0}) \cdots h^{k_n}(\texttt{0})이 어떤 mm에 대한 hm(0)h^m(\texttt{0})의 부분 문자열이면 TAK을, 그렇지 않으면 NIE를 출력합니다. (TAK과 NIE는 각각 폴란드어로 예와 아니요를 뜻합니다.)

참고

k=(1,2)k = (1, 2)인 경우 문자열은 1 다음에 10, 즉 110이고, 110은 h4(0)=10110h^4(\texttt{0}) = \texttt{10110}의 부분 문자열이므로 답은 TAK입니다.

k=(2,0)k = (2, 0)인 경우 문자열은 10 다음에 0, 즉 100입니다. 00은 어떤 hm(0)h^m(\texttt{0})에도 나타나지 않으므로 100은 부분 문자열이 될 수 없고 답은 NIE입니다.

예제3

  1. 예제 1

    입력
    2
    2
    1 2
    2
    2 0
    
    예상 출력
    TAK
    NIE
    
  2. 예제 2

    입력
    1
    1
    0
    
    예상 출력
    TAK
    
  3. 예제 3

    입력
    1
    3
    1 1 1
    
    예상 출력
    NIE