幼稚园的树2
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛牛在幼稚园做义工,幼稚园中共有 n 棵树,第 1 天中午时它们的高度分别为:h_1,h_2,…,h_n (单位:毫米)。

每一天的晚上第 i 棵树的高度会增加 a_i 毫米,而牛牛的任务则是在第二天的清晨检查每一棵树的高度,若某棵树的高度超过了 k 毫米牛牛就会将它的高度修剪为 b 毫米。

牛牛想请你帮它计算一下第 m 天中午每一棵树的高度。

输入描述:

本题采用多组案例输入,第一行一个整数 T 代表案例组数。

每组案例中,第一行输入四个空格分隔的整数分别代表:n\ m\ k\ b

接下来一行输入 n 个由空格分隔的整数代表:h_1,h_2,…,h_n

接下来一行输入 n 个由空格分隔的整数代表:a_1,a_2,…,a_n

保证:
1 \leq n,m,k \leq 10^5 
1 \leq h_i,b \leq k 
1 \leq a_i \leq 10^5 
单个测试点中所有案例 n 的和不超过 2\times 10^5

输出描述:

对于每组案例,输出一行 n 个空格分隔的整数代表第 m 天中午每棵树的高度(单位:毫米),案例与案例之间用换行分隔。
示例1

输入

复制
2
1 1 10 3
10
20
3 4 10 3
1 5 4
20 3 2

输出

复制
10
3 6 10