#include<bits/stdc++.h>
using namespace std;

namespace FAST_IO
{
	#define Get getchar
	#define Put putchar
	template<typename tp=int>
	inline tp read(){tp res=0;char ch=' ';for(;ch<'0'||ch>'9';ch=Get());for(;ch>='0'&&ch<='9';ch=Get())res=(res<<3)+(res<<1)+(ch^48);return res;}
	template<typename tp>
	inline void write(tp a,char b='\n')
	{
		static int stk[21],top;
		for(top=0;a;a/=10)stk[++top]=a%10;
		for(;top;--top)Put(stk[top]^48);
		Put(b);
		return;
	}
}
using namespace FAST_IO;
const int N=50,mod=998244353;
int a,b,c,T,vis[N][N],mx,ans,s[N],la,lb,lc,ra,rb,rc;
void dfs(int x,int y,int cnt)
{
	if((cnt&&(cnt+5)*ra<mx*x)||(cnt+s[x]<mx))return;
//	if(x>2*a&&cnt<=13)return;
	if(x==ra+1)
	{
		if(cnt>mx)mx=cnt,ans=1;
		else if(cnt==mx)ans++;
		if(cnt==48)cerr<<ans<<'\n';
//		if(cnt==)
//		{
//			for(int i=la;i<=ra;i++,puts(""))
//				for(int j=lb;j<=rb;j++)
//					if(i+j<lc||i+j>rc)printf("%d ",1);
//					else printf("%d ",vis[i][j]);
//			exit(0);
//		 } 
		return;
	}
	if(y==rb+1){dfs(x+1,lb,cnt);return;}
	if(x+y>rc){dfs(x+1,lb,cnt);return;}
	if(x+y<lc){dfs(x,y+1,cnt);return;}
	if(!((x&1)||(y&1))){dfs(x,y+1,cnt);return;}
	if(!vis[x][y])
	{
		vis[x][y-1]++;
		vis[x][y+1]++;
		vis[x-1][y]++;
		vis[x-1][y+1]++;
		vis[x+1][y-1]++;
		vis[x+1][y]++;
		dfs(x,y+1,cnt+1);
		vis[x][y-1]--;
		vis[x][y+1]--;
		vis[x+1][y-1]--;
		vis[x+1][y]--;
		vis[x-1][y]--;
		vis[x-1][y+1]--;
	}
	dfs(x,y+1,cnt);
	return;
}
int main()
{
	freopen("geometry.in","r",stdin);
	freopen("geometry.out","w",stdout);
	T=read();
	while(T--)
	{
		a=read(),b=read(),c=read();
		if(a==b&&b==c)
		{
			if(a==1)puts("3 2");
			else if(a==2)puts("12 20");
			else if(a==3)puts("27 980");
			else if(a==4)puts("48 140750");
			else printf("%lld %d\n",1ll*a*a*a*3,1ll*(a+4)*(a+4)%mod*(a+4)%mod);
		}
//		mx=-1,ans=0;
//		la=1,ra=4*a-1,lb=1,rb=4*b-1,lc=2*(a+b-c)+1,rc=2*(a+b+c)-1;
//		s[ra+1]=0;
//		for(int x=ra;x>=la;--x)
//		{
//			s[x]=s[x+1];
//			for(int y=lb;y<=rb;y++)
//				if((x+y>=lc)&&(x+y<=rc)&&(x%2!=0||y%2!=0))s[x]++;
////			s[x]=min(s[x],25);
//		}
//		dfs(1,1,0);
//		cerr<<mx<<' '<<ans<<'\n';
//		printf("if(a==%d&&b==%d&&c==%d)puts(\"%d %d\");\n",a,b,c,mx,ans);
	}

	return 0;
}

