만드는 중입니다

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

순열

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

요약
빈 칸을 채워 완성한 순열이 길이 3 이상의 등차수열 부분수열을 포함하는 경우의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

치아키는 1부터 nn까지의 정수로 이루어진 순열 p1,p2,…,pnp_1,p_2,\dots,p_n을 가지고 있지만, 일부 위치의 값은 알려져 있지 않다. 그녀는 빈 위치를 채웠을 때 결과 순열이 길이 33 이상인 등차수열 부분수열을 포함하는 경우의 수를 알고 싶어 한다.

경우의 수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다.

첫 줄에 순열의 길이 nn (1≤n≤501 \le n \le 50)이 주어진다.

둘째 줄에 정수 p1,p2,…,pnp_1,p_2,\dots,p_n (0≤pi≤n0 \le p_i \le n)이 주어진다. pi=0p_i = 0이면 ii번째 위치의 값이 알려져 있지 않다는 뜻이다. 0이 아닌 값은 모두 서로 다르다.

모든 테스트 케이스의 nn의 합은 5050을 넘지 않는다.

출력

각 테스트 케이스마다 답을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2
    3
    0 0 0
    7
    1 0 3 0 0 6 0
    
    예상 출력
    2
    21