Đếm dãy

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn được cho số \(n\) và một dãy \(a\) gồm \(n\) phần tử \((3 ≤ n ≤ 10^6; a_i ≤ 10^9\) với \(1 ≤ i ≤ n)\) Biết rằng \(a_i ≠ a_j\) với mọi \(1 ≤ i, j ≤ n\)

Hãy đếm số dãy thỏa mãn chia lấy dư \(10^9 + 7\): không tồn tại bộ ba số \((i, j, k)\) sao cho \(1 ≤ i < j < k ≤ n\) và \(a_k < a_i < a_j\)

Input

Dòng đầu tiên gồm số \(t\) \((t ≤ 10^4)\), chỉ số test cases của bài. Biết rằng tổng \(n\) của \(t\) test cases tối đa bằng \(10^6\)

Dòng đầu tiên của mỗi test cases gồm số \(n\) \((3 ≤ n ≤ 10^6)\), chỉ độ dài của dãy \(a\)

Dòng thứ hai của mỗi test cases dãy \(a\) \((a_i ≤ 10^9\) với \(1 ≤ i ≤ n)\)

Output

Gồm \(t\) dòng, mỗi dòng gồm 1 số là số cách sắp xếp dãy thỏa mãn chia lấy dư \(10^9 + 7\)

Example

Test 1

Input
1
3
2 7 4
Output
5
Note

Có 5 cách sắp xếp, là:
\(2\) \(4\) \(7\)
\(2\) \(7\) \(4\)
\(4\) \(2\) \(7\)
\(7\) \(2\) \(4\)
\(7\) \(4\) \(2\)

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.