#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #include <vector> using namespace std; #define LL __int64 #define maxn 11111 const LL mod=1e9+7; LL a[maxn],ans[maxn]; LL pow_mod(LL a,LL b) { LL s=1; while(b) { if(b&1) s=(s*a)%mod; a=(a*a)%mod; b=b>>1; } return s; } int main() { LL T; cin>>T; while(T--) { LL i,j,n,t,k,s; cin>>n>>t>>k; s=pow_mod(k,t); for(i=0;i<n;i++) { cin>>a[i]; a[i]=(a[i]*s)%mod; } t=t%n; for(i=t,j=0;i<n;i++,j++) ans[i]=a[j]; for(i=0;i<t;i++,j++) ans[i]=a[j]; cout<<ans[0]; for(i=1;i<n;i++) cout<<" "<<ans[i]; cout<<endl; } return 0; } /* 一开始以为是用循环矩阵解得,找到了矩阵 |a1 a2 a3|*|0 k 0|=|a'1 a'2 a'3| |0 0 k| |k 0 0| 是个循环矩阵,后来TLE了才发现时间复杂度O(n^2),汗一个。。。 之后发现循环矩阵每行只有一个k,t次的矩阵,里边的数值就变为k^t,而且数值循环右移了t次,直接用这个规律快速幂就解决了 */