/*此题主要是对时间+1的运算上稍加考虑即可,主要思想在于用for循环当你秒对60求余后,如果大于等于1就对分+1,否则不用管,向下一层循环,同理对分判断是否需要对时+1,此题较水但是推时间方程式时对后来动态规划有帮助,因为此处的方程推法与状态转移方程推法有相似之处*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[3];//这里的数组不用太大3个即可
int b[3];
int c[3];
int main()
{
int n, cnt, m, sum;
while(scanf("%d", &n) != EOF){
while(n--){
for(int i = 0; i < 3; i++)scanf("%d", &a[i]);
for(int j = 0; j < 3; j++)scanf("%d", &b[j]);
for(int i = 0; i < 3 ;i++){
c[i] = a[i] + b[i];
}
for(int i = 2; i > 0 ; i--){//此题的核心之处只考虑+1的情况,而且此处需控制循环次数为2,不然会越界
if(c[i] >= 60){
sum = c[i] / 60;
c[i] = c[i] % 60;
c[i-1] = sum + c[i-1];
}
}
cnt = 0;//这里的计数器会为后面输出空格所用 ,因为此题只用输出两个空格且已知也可直接将空格数出两次,博主只是习惯这样写而已
for(int i = 0; i <= 2; i++){
cout<<c[i];
cnt++;
if(cnt == 3)break;
cout<<" ";
}
cout<<endl;
memset(a, 0, sizeof(a));//一下三个清零只是博主的一个习惯,怕会对数组有影响,实际这里不用,这也是博主的习惯而已
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
}
}
return 0;
}