#include<bits/stdc++.h>
using namespace std;
const int md=998244353,M=32768;
int a,b,c,T,popcnt[M],n;
vector<int>vc;
vector<int>ve[M];
int f[M],g[M],F[M],G[M];
void init(){
	vc.clear();
	for(int S=0;S<1<<n;++S)if(!(S&(S>>1)))vc.emplace_back(S);
	for(int S:vc)ve[S].clear();
	for(int S:vc){
		for(int T:vc)if(!(S&T)&&!(S&(T<<1)))
			ve[T].emplace_back(S);
	}
	memset(f,0,sizeof f);
	memset(F,0,sizeof F);
	f[0]=1;
}
inline void upd(int&a){a+=a>>31&md;}
void work(){
	for(int i=-2*b+1;i<=2*b;++i){
		int ZT=0;
		for(int j=-2*a+1;j<=2*a-1;++j)
			if(-2*c+1<=i+j&&i+j<=2*c-1&&((i&1)||(j&1)))ZT|=1<<(j-(-2*a+1));
		if(i==2*b)ZT=0;
		for(int S:vc)g[S]=G[S]=0;
		for(int T:vc)if((ZT&T)==T)
			for(int S:ve[T]){
				int nds=F[S]+popcnt[T];
				if(nds>G[T])G[T]=nds,g[T]=f[S];
				else if(nds==G[T])upd(g[T]+=f[S]-md);
			}
		for(int S:vc)f[S]=g[S],F[S]=G[S];
	}
	cout<<F[0]<<' '<<f[0]<<'\n';
}
int main(){
	freopen("geometry.in","r",stdin);
	freopen("geometry.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	for(int i=1;i<M;++i)
		popcnt[i]=popcnt[i>>1]+(i&1);
	for(cin>>T;T--;){
		cin>>a>>b>>c;
		n=4*a-1;
		init();
		work();
	}
//	cerr<<1.*clock()/CLOCKS_PER_SEC<<'\n';
	return 0;
}
