产值调整
题号:NC307643
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

偏远的小镇上,三兄弟共同经营着一家小型矿业公司“兄弟矿业”。公司旗下有三座矿山:金矿、银矿和铜矿,它们的初始产值分别用非负整数 ABC 表示。这些矿山的产出是小镇经济的核心,支撑着三兄弟和许多矿工家庭的生计。

然而,各矿山的产值波动剧烈,有时金矿收益高而银矿、铜矿低迷,有时则相反。这种不稳定性让公司收入难以预测,也常引发兄弟间的争执。为了稳定经营,三兄弟设计了一个公平的产值调整策略,每年执行一次,每次调整时,将根据当前的产值 ABC,计算新产值:

1. 金矿新产值:A'=\lfloor \dfrac{B+C}{2} \rfloor
2. 银矿新产值:B'=\lfloor \dfrac{A+C}{2} \rfloor
3. 铜矿新产值:C'=\lfloor \dfrac{A+B}{2} \rfloor

其中,\lfloor \rfloor 表示向下取整。例如,\lfloor 3.7\rfloor = 3\lfloor 5.2\rfloor = 5

计算出 A'B'C' 后,同时更新:A 变为 A'B 变为 B'C 变为 C',作为下一年调整的基础。

三兄弟认为这个方法能平衡产值波动,于是计划连续执行 K 次调整。现在,请你帮他们计算,经过 K 次调整后,金矿、银矿和铜矿的产值分别是多少。

输入描述:

输入的第一行包含一个整数 T,表示测试用例的数量。

接下来的 T 行,每行包含四个整数 A,B,C,K,分别表示金矿、银矿和铜矿的初始产值,以及需要执行的调整次数。


- 对于 100\% 的评测用例,1 \leq T \leq 10^51 \leq A, B, C, K \leq 10^9

输出描述:

对于每个测试用例,输出一行,包含三个整数,表示经过 K 次调整后金矿、银矿和铜矿的产值,用空格分隔。
示例1

输入

复制
2
10 20 30 1
5 5 5 3

输出

复制
25 20 15
5 5 5