int n;
long long X;
cin >> n >> X;
vector<long long> a(n), b(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
for (int i = 0; i < n; ++i) {
cin >> b[i];
}
// 仅修改:>> 改为 > >,兼容旧标准,其余完全不变
priority_queue<pair<long long, int>, vector<pair<long long, int> >,
greater<pair<long long, int> > > pq;
for (int i = 0; i < n; ++i) {
pq.push(make_pair(a[i], i + 1));
}
// 执行X次支援
for (long long i = 0; i < X; ++i) {
pair<long long, int> top_elem = pq.top();
pq.pop();
int idx = top_elem.second; // 集体编号(1-based)
int pos = idx - 1; // 数组索引(0-based)
a[pos] += b[pos]; // 增加建设水平
pq.push(make_pair(a[pos], idx)); // 更新后放回堆
}
// 输出结果
for (int i = 0; i < n; ++i) {
if (i != 0) cout << " ";
cout << a[i];
}
cout << endl;
return 0;