#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int t;
cin>>t;
while (t--)
{
int n,p;
cin>>n>>p;
int a[n];
for (int i=0;i<n;i++)
{
cin>>a[i];
}
map<int,int> ans;
ans[0]=1;
ans[p]=1;
int now=0;
int maxx=0,answ=0;
for (int i=0;i<n;i++)
{
now=(now+a[i])%p;
pair<int,int> x=*(ans.lower_bound((now+1+p)%p));
if ((now-x.first+p)%p>maxx)
{
maxx=(now-x.first+p)%p;
answ=x.second;
}
else if ((now-x.first+p)%p==maxx)
{
answ+=x.second;
}
ans[now]++;
}
cout<<maxx<<" "<<answ<<"\n";
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCnNpZ25lZCBtYWluKCkKewoJaW50IHQ7CgljaW4+PnQ7Cgl3aGlsZSAodC0tKQoJewoJCWludCBuLHA7CgkJY2luPj5uPj5wOwoJCWludCBhW25dOwoJIAlmb3IgKGludCBpPTA7aTxuO2krKykKCSAJewoJIAkJY2luPj5hW2ldOwogCQl9CiAJCW1hcDxpbnQsaW50PiBhbnM7CiAJCWFuc1swXT0xOwogCQlhbnNbcF09MTsKCQlpbnQgbm93PTA7CgkJaW50IG1heHg9MCxhbnN3PTA7CiAJCWZvciAoaW50IGk9MDtpPG47aSsrKQogCQl7CiAJCQlub3c9KG5vdythW2ldKSVwOwogCQkJcGFpcjxpbnQsaW50PiB4PSooYW5zLmxvd2VyX2JvdW5kKChub3crMStwKSVwKSk7CiAJCQlpZiAoKG5vdy14LmZpcnN0K3ApJXA+bWF4eCkKIAkJCXsKIAkJCQltYXh4PShub3cteC5maXJzdCtwKSVwOwogCQkJCWFuc3c9eC5zZWNvbmQ7CgkgCQl9CgkgCQllbHNlIGlmICgobm93LXguZmlyc3QrcCklcD09bWF4eCkKCSAJCXsKCSAJCQlhbnN3Kz14LnNlY29uZDsKCSAJCX0KCSAJCWFuc1tub3ddKys7CiAJCX0KIAkJY291dDw8bWF4eDw8IiAiPDxhbnN3PDwiXG4iOwoJfQogICAgcmV0dXJuIDA7Cn0gICA=