#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; long long mas[111111]; long long mod = 1e9+7; long long fact[111111]; long long dd[111111]; long long bin_pow(long long b, long long s) { if (s == 0) return 1; if (s == 1) return b % mod; long long d = bin_pow(b, s/2); d = (d * d) % mod; if (s % 2 == 1) d = (d * b) % mod; return d; } long long f(int n, long long k) { if (n == 0) return 1; if (k == 0) return 0; if (k == 1) return 1; if (n == 1) return k % mod; return (dd[n-2] * bin_pow(fact[n-1], mod-2))%mod; } int main() { ios::sync_with_stdio(0); int t; cin >> t; while (t --> 0) { int n, c; long long k; cin >> n >> c >> k;// c++; for(int i = 1; i <= n; ++i) { cin >> mas[i]; mas[i] %= mod; } fact[0] = 1; for(int i = 1; i <= c; ++i) fact[i] = (fact[i-1] * i)%mod; dd[0] = k % mod; long long K = k % mod; for(int i = 1; i <= c; ++i) dd[i] = (dd[i-1] * (K+i))%mod; long long ans = mas[c]; for(int i = 1; i < c; ++i) { ans += (mas[c-i] * 1ll * f(i+1, k)) % mod; ans %= mod; } cout << ans << "\n"; } return 0; }