rt,样例对。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=150;
int n,s,m,k;
class Node
{
public:
int a[N][N];
Node(){
memset(a,0,sizeof a);
}
Node operator*(const Node& tmp)const
{
Node kkk;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
kkk.a[i][j]+=this->a[i][k]*tmp.a[k][j];
return kkk;
}
}num,A,B,ans;
Node qpow_jz(Node a,int b)
{
if(b==1)
return a;
Node tmp=qpow_jz(a,b>>1);
if(b%2==0)
return tmp*tmp;
return tmp*tmp*a;
}
signed main()
{
cin>>n>>s>>m>>k;
for(int i=1;i<=n;i++)
cin>>num.a[1][i];
for(int i=1;i<=n;i++)
ans.a[i][i]=1;
for(int i=1;i<=n;i++)
{
A.a[i%n+1][i]=1;
B.a[i][i]=1;
if(i==m||i==s)
B.a[i][i]=0,B.a[i][i^m^s]=1;
}
ans=ans*qpow_jz(A*B,k);
num=num*ans;
for(int i=1;i<=n;i++)
cout<<num.a[1][i]<<" ";
return 0;
}