#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]<<' ';
	}
}