#include<cstdio>
#include<vector>
using namespace std;
int a,b,c,ansl,mxans;
bool use[105][105];
pair<int,int> nxt[10005];
int sz;
void dfs(int now,int cnt)
{
	if(cnt+(sz-now)/2+1<mxans) return ;
	if(now==sz)
	{
		if(cnt>mxans) mxans=cnt,ansl=0;
		if(cnt==mxans) ansl++;
		if(ansl==998244353) ansl=0;
		return ;
	}
	int x=nxt[now].first,y=nxt[now].second;
	if(use[x][y+1]==0&&use[x][y-1]==0&&use[x+1][y]==0
	&&use[x-1][y]==0&&use[x+1][y-1]==0&&use[x-1][y+1]==0)
	{
		use[x][y]=1;
		dfs(now+1,cnt+1);
		use[x][y]=0;
	}
	dfs(now+1,cnt);
}
int main()
{
	freopen("geometry.in","r",stdin);
	freopen("geometry.out","w",stdout);
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d",&a,&b,&c);
		if(a==1&&b==1&&c==1) printf("3 2\n");
		else if(a==2&&b==2&&c==2) printf("12 20\n");
		else if(a==3&&b==3&&c==3) printf("27 980\n");
		else if(a==4&&b==4&&c==4) printf("48 \n");
		else
		{
			sz=mxans=ansl=0;
			for(int i=0;i<100;i++)
				for(int j=0;j<100;j++)
					if((!(i&1)||!(j&1))&&!(i<51-a*2+1||i>51+a*2-1||j<51-b*2+1||j>51+b*2-1||i+j<102-c*2+1||i+j>102+c*2-1))
						nxt[sz++]={i,j};
			dfs(0,0);
			printf("%d %d\n",mxans,ansl);
		}
	}
	return 0;
}