#include <bits/stdc++.h> 
#define fp( i , x , y ) for( int i=(x); i<=(y); ++i ) 
#define fq( i , x , y ) for( int i=(y); i>=(x); --i ) 
#define i60 long long 
#define dou double 
#define u60 unsigned long long 
#define IL inline 
using namespace std ; 
struct node { int x , y ; } lis[105] ; 
int id[30][30] , c[105] , tot , mx , nw , cnt ;   
int L[6][2] = { { 0 , 1 } , { 0 , -1 } , { 1 , 0 } , { -1 , 0 } , {1,-1} , {-1,1} } ; 
void dfs( int d ) { 
  if( d == tot+1 ) { 
    if( mx < nw ) { 
      mx = nw ; cnt = 1 ; 
      return ; 
	} 
	if( mx == nw ) cnt ++ ; 
	return ; 
  } 
  dfs( d+1 ) ; 
  int tx , ty ;  
  if( c[d] == 0 ) { 
    fp( i , 0 , 5 ) { 
      tx = lis[d].x + L[i][0] ; 
      ty = lis[d].y + L[i][1] ; 
      if( id[tx+10][ty+10] ) 
        c[id[tx+10][ty+10]] ++ ;
   } 
	  nw ++ ; 
	  dfs( d+1 ) ; 
	  nw -- ; 
	  
    fp( i , 0 , 5 ) { 
      tx = lis[d].x + L[i][0] ; 
      ty = lis[d].y + L[i][1] ; 
      if( id[tx+10][ty+10] ) 
        c[id[tx+10][ty+10]] -- ;
   } 
	} 
}   
signed main( ) { 
  freopen( "geometry.in" , "r" , stdin ) ; 
  freopen( "geometry.out" , "w" , stdout ) ; 
  int T ; cin >> T ; 
  while( T -- ) { 
    memset( id , 0 , sizeof(id) ) ; 
    memset( c , 0 , sizeof(c) ) ; tot = 0 ; 
    int a , b , C ; 
    cin >> a >> b >> C ; 
    fp( x , -2*a+1 , 2*a-1 ) fp( y , -2*b+1 , 2*b-1 ) 
      if( -2*C+1 <= x + y && x + y <= 2*C-1 ) { 
        if( x % 2 == 0 && y % 2 == 0 ) continue ; 
        id[x+10][y+10] = ++tot ; 
		lis[tot] = (node){ x , y } ; 
	  } 
	cnt = mx = 0 ; 
	dfs( 1 ) ; 
	cout << mx << ' ' << cnt << '\n' ; 
  } 
  return 0 ; 
} 
