#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,x,y,t;
cin>>n>>x>>y>>t;
vector<ll> a(n),b(n),dp(t+1,0);
vector<vector<ll>> money(n,vector<ll>(t+1,0)),dp_num(t+1,vector<ll>(n,0));
for(int i=0;i<n;i++){
cin>>a[i];
}for(int i=0;i<n;i++){
cin>>b[i];
}
//二维数组money储存i群花费j时间能得到多少钱,对money处理
for(int i=0;i<n;i++){
ll c=0;
for(int j=1;j<=t;j++){
money[i][j]=money[i][j-1];
if(j>x && c<a[i] && (j-x)%y==0){
money[i][j]+=b[i];
c++;
}
}
}
//dp储存y时间能最多得到多少钱,dp_num储存在y时间里各个群抢了多少个包
for(int y=1;y<=t;y++){
for(int i=0;i<n;i++){
for(int j=1;j<=y;j++){
if(dp[y-j]+money[i][j]>dp[y] && money[i][j]/b[i]+dp_num[y-j][i]<=a[i]){
dp[y]=dp[y-j]+money[i][j];
dp_num[y]=dp_num[y-j];
dp_num[y][i]+=money[i][j]/b[i];
}
}
}
}
for(int i=0;i<n;i++){
cout<<dp_num[t][i]<<' ';
}
}