#include <bits/stdc++.h>

using namespace std;

const int MOD = 1e9 + 7;
const int N = 2010;

int n, m, dp[N][N], kol[N][N], q, l[N][N], u[N][N];

inline void solve()
{
	cin >> n >> m >> q;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			l[i][j] = j, u[i][j] = i;
	for (int i = 0; i < q; i++)
	{
		int x1, y1, x2, y2;
		cin >> x1 >> y1 >> x2 >> y2;
		x1--, x2--, y1--, y2--;
		if (x1 == x2 || y1 == y2) continue;
		for (int x = x1 + 1; x <= x2; x++)
			for (int y = y1 + 1; y <= y2; y++)
				l[x][y] = min(l[x][y], y1), u[x][y] = min(u[x][y], x1);
	}
	for (int s = 0; s <= (n + m - 2); s++)
		for (int i = 0; i < min(s + 1, n); i++)
		{
			int j = (s - i);
			if (j < 0 || j >= m) continue;
			dp[i][j] = 1;
			kol[i][j] = 1;
			if (i == 0 || j == 0) continue;
			for (int y = l[i][j]; y < j; y++)
				if (dp[i][j] <= dp[i - 1][y] + 1)
				{
					if (dp[i][j] < dp[i - 1][y] + 1)
					{	
						dp[i][j] = dp[i - 1][y] + 1;    
						kol[i][j] = 0;
					}
					kol[i][j] += kol[i - 1][y];
					if (kol[i][j] >= MOD) kol[i][j] -= MOD;
				}
			for (int x = u[i][j]; x < i; x++)
				if (dp[i][j] <= dp[x][j - 1] + 1)
				{
					if (dp[i][j] < dp[x][j - 1] + 1)
					{	
						dp[i][j] = dp[x][j - 1] + 1;
						kol[i][j] = 0;
					}
					kol[i][j] += kol[x][j - 1];
					if (kol[i][j] >= MOD) kol[i][j] -= MOD;
				}
			if (l[i][j] < j && u[i][j] < i && dp[i][j] == dp[i - 1][j - 1] + 1)
			{
				kol[i][j] -= kol[i - 1][j - 1];
				if (kol[i][j] < 0) kol[i][j] += MOD;
			}
		}   
	int mx = 0;
	int ans = 0;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
 			mx = max(mx, dp[i][j]);
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			if (mx == dp[i][j])   
			{
				ans += kol[i][j];
				if (ans >= MOD) ans -= MOD;
			}
	cout << mx << " " << ans << "\n";								
}

int main()
{
	ios::sync_with_stdio(0);
	int T;
	cin >> T;
	for (int z = 0; z < T; z++)
		solve();
	return 0;
}