//teja349 #include #include #include #include #include #include #include #include #include #include #include #include #include #include //setbase - cout << setbase (16); cout << 100 << endl; Prints 64 //setfill - cout << setfill ('x') << setw (5); cout << 77 << endl; prints xxx77 //setprecision - cout << setprecision (14) << f << endl; Prints x.xxxx //cout.precision(x) cout<=b;i--) #define pb push_back #define mp make_pair #define vi vector< int > #define vl vector< ll > #define ss second #define ff first #define ll long long #define pii pair< int,int > #define pll pair< ll,ll > #define sz(a) a.size() #define inf (1000*1000*1000+5) #define all(a) a.begin(),a.end() #define tri pair #define vii vector #define vll vector #define viii vector #define mod (163577857) #define pqueue priority_queue< int > #define pdqueue priority_queue< int,vi ,greater< int > > #define MAXN 100000 ll mat[40][210][210],res[210],res1[210],a[210],coef[210]; ll k; ll computematr(ll val){ ll i,j,p; rep(i,k+1){ rep(j,k+1){ rep(p,k+1){ mat[val][i][j]+=mat[val-1][i][p]*mat[val-1][p][j]; mat[val][i][j]%=mod; } } } return 0; } //std::ios::sync_with_stdio(false); ll getallmatrices(){ ll i,j,p; rep(i,40){ rep(j,110){ rep(p,110){ mat[i][j][p]=0; } } } mat[0][0][0]=1; //cout<0){ if(val%2){ matrixmult(res,i); } i++; val/=2; } return res[0]; } ll extend_gcd(ll a,ll b,ll &x,ll &y){ if(b==0){ x=1; y=0; return a; } ll x1,y1; ll ans =extend_gcd(b,a%b,x1,y1); x=y1; y=x1-(a/b)*y1; return ans; } int main(){ std::ios::sync_with_stdio(false); ll t; //cin>>t; t=1; while(t--){ ll n,h,x; cin>>n>>h>>x>>k; ll i,j,p; rep(i,n){ cin>>pos[i]; } pre[0]=0; f(i,1,k+1){ cin>>a[i]; pre[i]=pre[i-1]+a[i]; pre[i]%=mod; } f(i,1,k+1){ cin>>coef[i]; } getallmatrices(); ll ans,total=0; ll valued=getsum(h); rep(i,n){ ans=getsum(pos[i]); if(pos[i]>x){ ans-=getsum(pos[i]-x); } else if(pos[i]