#include #include const int MOD = 10'0000'0007; // 快速幂计算 long long mod_pow(long long base, long long exp, long long mod) { long long result = 1; while (exp > 0) { if (exp % 2 == 1) { result = (result * base) % mod; } base = (base * base) % mod; exp /= 2; } return result; } // 计算前缀和 void compute_prefix_sum(const std::vector& array, std::vector& prefix) { int n = array.size(); prefix[0] = 0; for (int i = 1; i <= n; ++i) { prefix[i] = (prefix[i - 1] + array[i - 1]) % MOD; } } // 计算所有子区间平均数之和 long long calculate_average_sum(int n, const std::vector& array) { std::vector prefix(n + 1, 0); compute_prefix_sum(array, prefix); // 预处理每个长度的逆元 std::vector inverse(n + 1); for (int i = 1; i <= n; ++i) { inverse[i] = mod_pow(i, MOD - 2, MOD); } long long total_avg_sum = 0; for (int l = 0; l < n; ++l) { for (int r = l; r < n; ++r) { long long subarray_sum = (prefix[r + 1] - prefix[l] + MOD) % MOD; int length = r - l + 1; long long avg = (subarray_sum * inverse[length]) % MOD; total_avg_sum = (total_avg_sum + avg) % MOD; } } return total_avg_sum; } int main() { int t; std::cin >> t; std::vector results; while (t--) { int n; std::cin >> n; std::vector array(n); for (int i = 0; i < n; ++i) { std::cin >> array[i]; } results.push_back(calculate_average_sum(n, array)); } for (long long result : results) { std::cout << result << std::endl; } return 0; }