#include <bits/stdc++.h>
using namespace std;
int item[1005][1005];
int main()
{
int t;
cin >> t;
while(t--)
{
int n,p;
cin >> n >> p;
int arr[n],sum[n];
for(int i=0;i<n;i++)
cin >> arr[i];
sum[0] = arr[0];
for(int i=1;i<n;i++)
sum[i] = sum[i-1] + arr[i];
for(int i=0;i<n;i++)
item[i][i] = arr[i]%p;
for(int i=0;i<n;i++)
{
for(int j=0;j<i;j++)
{
int m = max(i,j);
int n = min(i,j);
if(n-1>=0)
item[i][j] = (sum[m]-sum[n-1])%p;
else
item[i][j] = sum[m]%p;
}
}
/*
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
cout << item[i][j] << " ";
cout << endl;
}
*/
int max_v,max_c;
max_v = INT_MIN;
max_c = 0;
//CORRECT LOGIC FROM HERE
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
max_v = max(max_v,item[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
if(item[i][j] == max_v)
max_c++;
cout << max_v << " " << max_c << endl;
for(int i=0;i<n;i++)
for(int j=0;j <n;j++)
item[i][j] = 0;
//CORRECT LOGIC TILL HERE
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgaXRlbVsxMDA1XVsxMDA1XTsKaW50IG1haW4oKQp7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwoKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBpbnQgbixwOwogICAgICAgIGNpbiA+PiBuID4+IHA7CgogICAgICAgIGludCBhcnJbbl0sc3VtW25dOwogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIGNpbiA+PiBhcnJbaV07CgogICAgICAgIHN1bVswXSA9IGFyclswXTsKICAgICAgICBmb3IoaW50IGk9MTtpPG47aSsrKQogICAgICAgICAgICBzdW1baV0gPSBzdW1baS0xXSArIGFycltpXTsKCgogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIGl0ZW1baV1baV0gPSBhcnJbaV0lcDsKCiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8aTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBtID0gbWF4KGksaik7CiAgICAgICAgICAgICAgICBpbnQgbiA9IG1pbihpLGopOwoKICAgICAgICAgICAgICAgIGlmKG4tMT49MCkKICAgICAgICAgICAgICAgICAgICBpdGVtW2ldW2pdID0gKHN1bVttXS1zdW1bbi0xXSklcDsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBpdGVtW2ldW2pdID0gc3VtW21dJXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qCiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8PWk7aisrKQogICAgICAgICAgICAgICAgY291dCA8PCBpdGVtW2ldW2pdIDw8ICIgIjsKICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgIH0KICAgICAgICAqLwoKICAgICAgICBpbnQgbWF4X3YsbWF4X2M7CiAgICAgICAgbWF4X3YgPSBJTlRfTUlOOwogICAgICAgIG1heF9jID0gMDsKCiAgICAgICAgLy9DT1JSRUNUIExPR0lDIEZST00gSEVSRQogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8PWk7aisrKQogICAgICAgICAgICAgICAgbWF4X3YgPSBtYXgobWF4X3YsaXRlbVtpXVtqXSk7CgogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8PWk7aisrKQogICAgICAgICAgICAgICAgaWYoaXRlbVtpXVtqXSA9PSBtYXhfdikKICAgICAgICAgICAgICAgICAgICBtYXhfYysrOwoKCiAgICAgICAgY291dCA8PCBtYXhfdiA8PCAiICIgPDwgbWF4X2MgPDwgZW5kbDsKCiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgZm9yKGludCBqPTA7aiA8bjtqKyspCiAgICAgICAgICAgICAgICBpdGVtW2ldW2pdID0gMDsKICAgICAgICAvL0NPUlJFQ1QgTE9HSUMgVElMTCBIRVJFCiAgICB9CiAgICByZXR1cm4gMDsKfQo=