#include <stdio.h>
int main()
{
int t;
scanf("%d", &t); // 读取测试用例的数量
while (t--) { // 对每个测试用例进行处理
int n, max1 = 0, max2 = 0, k = 0;
scanf("%d", &n); // 读取数组的大小
int a[200010];
// 读取数组元素,并找到最大值和对应的索引
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
if (max1 < a[i])
{
max1 = a[i];
k = i;
}
}
// 找到除了第一个最大值外的数组中的第二大值
for (int i = 1; i <= n; i++)
{
if (i != k && max2 < a[i])
{
max2 = a[i];
}
}
// 输出每个元素减去相应最大值的结果
for (int i = 1; i <= n; i++)
{
if (i != k)
printf("%d ", a[i] - max1);
else
printf("%d ", a[i] - max2);
}
printf("\n"); // 输出换行,表示当前测试用例处理完毕
}
return 0;
}