토벤머리 용사는 자신이 가장 아끼는 장비 아이템의 스타포스를 강화하던 중 가장 효과적으로 스타포스를 진행하는 방법이 궁금해졌다.
아이템은 0 이상 N 이하의 정수 값 레벨을 갖는다.
아이템의 초기 레벨은 0이다.
이제 스타포스 강화의 진행 과정을 살펴보자.
레벨 i (0≤i≤N−1)의 아이템을 강화하기 위해서는
먼저 Ci의 비용을 지불해야 한다.
이후에는 다음 중 하나의 이벤트가 랜덤하게 발생한다:
각 0≤j≤i−1에 대해, Pi,j의 확률로 강화에 실패하여 레벨이 i에서 j로 감소한다.
각 i+1≤j≤N에 대해, Pi,j의 확률로 강화에 성공하여 레벨이 i에서 j로 증가한다.
편의상, Pi,i=0이라고 하자.
Pi,0+Pi,1+⋯+Pi,N=1이다.
즉, 강화 시에는 위의 N가지 이벤트 중 정확히 하나의 이벤트가 발생한다.
강화를 시도하기 직전마다 최대 한 개의 하락 방지 쿠폰을 구입할 수 있는데,
이 쿠폰은 사용 직후의 강화에만 적용된다.
레벨 i (1≤i≤N−1)의 아이템을 강화하기 직전
구입할 수 있는 쿠폰은 다음과 같이 i가지가 있다:
각 0≤j≤i−1에 대해, Di,j의 비용을 지불하여 i→j 하락 방지 쿠폰을 구입할 수 있다. 이 쿠폰은 강화에 실패하여 레벨이 k로 감소하는 이벤트가 발생할 경우, 아이템의 레벨을 max(k,j+1)로 바꾼다. 즉, 강화에 실패하더라도 레벨이 j 이하가 되지 않도록 보장해 준다.
강화 비용과 강화 이벤트의 확률, 쿠폰의 비용, 그리고 목표 레벨 N이 주어질 때,
최적의 전략을 사용하여 레벨 0의 아이템을 레벨 N으로 강화하기 위한
비용의 기댓값의 최솟값을 구하시오.
입력 형식
첫 줄에 테스트 케이스의 수를 나타내는 양의 정수 T가 주어진다.
그다음 줄부터 각 테스트 케이스에 대한 정보가 주어진다.
각 테스트 케이스의 첫 줄에 최대 레벨을 나타내는 정수 N이 주어진다.
그다음 줄에 강화 비용을 나타내는 N개의 정수
C0,C1,⋯,CN−1이 공백으로 구분되어 차례대로 주어진다.
이어지는 N−1개의 줄의 i (1≤i≤N−1)번째 줄에는
레벨 i의 강화에서 구입할 수 있는 하락 방지 쿠폰의 가격을 나타내는
i개의 정수 Di,0,Di,1,⋯,Di,i−1이
공백으로 구분되어 차례대로 주어진다.
이어지는 N개의 줄의 i+1 (0≤i≤N−1)번째 줄에는
레벨 i의 강화에서 발생하는 이벤트의 확률의
1000000 배의 값을 나타내는 N+1개의 정수
(1000000×Pi,0),(1000000×Pi,1),⋯,(1000000×Pi,N)이
공백으로 구분되어 차례대로 주어진다.
입력 제한
각 테스트 케이스에서의 N은 1 이상 15 이하이며, 모든 테스트 케이스에서의 N의 합은 100 이하이다.
각 테스트 케이스 안에서 모든 0 이상 N−1 이하인 i에 대해,
1≤C0≤C1≤⋯≤CN−1≤1000000
1≤Di,0≤Di,1≤⋯≤Di,i−1≤1000000
Pi,i=0
Pi,0+Pi,1+⋯+Pi,N=1
Pi,0≤Pi,1≤⋯≤Pi,i−1
Pi,i+1≥Pi,i+2≥⋯≥Pi,N
31≤Pi,i+1
을 만족한다.
출력 형식
각 테스트 케이스마다 한 줄에 하나씩 레벨 0의 장비 아이템을 레벨 N으로 강화하기 위한
비용의 기댓값의 최솟값을 출력한다.