만드는 중입니다

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

Sugar Sweet II

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

요약
무작위 순서로 일어나는 사건 i에서 아이의 사탕이 아이 b_i보다 적으면 w_i개를 받습니다. 모든 사건이 끝난 뒤 각 아이 사탕 수의 기댓값을 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

유형
확률, 동적 계획법, 분할 정복
정답자
아직 제출이 없습니다

문제

설탕은 달다.

nn명의 아이가 설탕을 달라고 하고 있다. Chen 교수가 아이들에게 설탕을 나눠 준다. ii번째 아이는 처음에 설탕을 aia_i개 가지고 있다.

nn개의 사건이 균일하게 무작위로 정해진 순서로 일어난다. ii번째 사건은 다음과 같다.

  • ii번째 아이가 bib_i번째 아이보다 설탕을 엄격히 적게 가지고 있으면, ii번째 아이는 설탕을 wiw_i개 더 받는다. 그렇지 않으면 아무 일도 일어나지 않는다.

사건이 무작위 순서로 일어나므로, Chen 교수의 조수 Randias는 모든 사건이 끝난 뒤 각 아이가 가진 설탕 개수의 기댓값을 알고 싶어 한다.

답은 기약분수 xy\frac{x}{y}로 나타낼 수 있다. 여기서 xx와 yy는 정수이고 y≢0(mod109+7)y \not\equiv 0 \pmod{10^9+7}이다. x⋅y−1 mod (109+7)x \cdot y^{-1} \bmod (10^9+7)의 값을 출력한다. 즉 0≤a<109+70 \le a < 10^9+7이고 a⋅y≡x(mod109+7)a \cdot y \equiv x \pmod{10^9+7}를 만족하는 정수 aa를 출력한다.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤5⋅1051 \le t \le 5 \cdot 10^5)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

첫 줄에 아이의 수 nn (1≤n≤5⋅1051 \le n \le 5 \cdot 10^5)이 주어진다. 둘째 줄에 aia_i (1≤ai≤1091 \le a_i \le 10^9)가 nn개 주어진다. 셋째 줄에 bib_i (1≤bi≤n1 \le b_i \le n)가 nn개 주어진다. 넷째 줄에 wiw_i (1≤wi≤1091 \le w_i \le 10^9)가 nn개 주어진다.

모든 테스트 케이스의 nn의 합은 5⋅1055 \cdot 10^5를 넘지 않는다.

출력

각 테스트 케이스마다 한 줄에 nn개의 정수를 출력한다. 각 아이가 마지막에 가지게 될 설탕 개수의 기댓값을 위에서 설명한 대로 109+710^9+7로 나눈 나머지로 출력한다.

예제1

  1. 예제 1

    입력
    4
    4
    2 5 5 2
    4 2 1 3
    3 2 1 4
    3
    5 4 3
    1 1 1
    6 6 6
    3
    5 4 3
    2 3 1
    1 2 3
    5
    2 1 3 2 1
    5 1 1 3 4
    1 3 4 2 4
    
    예상 출력
    500000007 5 5 6
    5 10 9
    166666673 5 6
    500000006 4 3 4 5