#include<iostream>
#include<iomanip>
#include<limits>
#include<cmath>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n,c,k,i,x,y,limit=0,j,f,e;
cin>>n>>c>>k;
int noe[n],fnoe[k+1],s=k;
for(i=0;i<n;i++){
noe[i]=0;
}
//noe will be used to store
//the no. of occurences of
//each integer from 1 to n.
while(s--){
cin>>x>>y;
for(i=(x-1);i<y;i++)
noe[i]++;
}
long double pin[c],pin2[c],pin3[c];
//for the first occurence of a particular
//integer
for(i=0;i<c;i++){
pin[i]=0.5*(1.0/double(c)); //probability that the subset won't be
//empty=0.5
//multiplied by probabilty of a particular
//colour to be selected.
//this is applicable for all colours except 1
}
pin[1]=0.5*(1.0/double(c))+0.5; //for colour 1: probabability that the subset
//will be empty will also be added to 0.5*(1/c)
long double ans[k],out=0;
for(i=0;i<=k;i++)
ans[i]=0; //suppose the no. of occurences of a particular
//integer is x then the expected colour
//is ans[x]
ans[0]=1;
//for the first occurence calculating the
//expected value of the colour
for(i=0;i<c;i++){
ans[1]=double(ans[1])+double(pin[i])*double(i);
pin2[i]=pin[i];
}
//now for each subsequent occurence
// calculating ans
for(i=2;i<=k;i++){
for(e=0;e<c;e++)
pin3[e]=0;
for(j=0;j<c;j++){
for(f=0;f<c;f++){
pin3[(j*f)%c]=double(pin3[(j*f)%c])+double(pin[j])*double(pin2[f]);
}
}
for(s=0;s<c;s++){
ans[i]=double(ans[i])+double(pin3[s])*double(s);
pin2[s]=double(pin3[s]);
}
}
ans[0]=1; //if an integer has zero occurences ans is 1
for(i=0;i<n;i++){
out=double(out)+double(ans[noe[i]]);
}
std::cout <<std::setprecision(10) << out << "\n";
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGlvbWFuaXA+CiNpbmNsdWRlPGxpbWl0cz4KI2luY2x1ZGU8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCl7CiAgICBpbnQgdDsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAJaW50IG4sYyxrLGkseCx5LGxpbWl0PTAsaixmLGU7ICAgCiAgICAJCgkJY2luPj5uPj5jPj5rOwoJCQoJCWludCBub2Vbbl0sZm5vZVtrKzFdLHM9azsKCQkKCQlmb3IoaT0wO2k8bjtpKyspewoJCQlub2VbaV09MDsKCQl9CgkJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ub2Ugd2lsbCBiZSB1c2VkIHRvIHN0b3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGUgbm8uIG9mIG9jY3VyZW5jZXMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VhY2ggaW50ZWdlciBmcm9tIDEgdG8gbi4KCQl3aGlsZShzLS0pewoJCQljaW4+Png+Pnk7CgkJCWZvcihpPSh4LTEpO2k8eTtpKyspCgkJCSAgIG5vZVtpXSsrOyAgICAgICAgICAgICAgICAgICAgIAogCgkJfQogCiAKIAogCgkJbG9uZyBkb3VibGUgcGluW2NdLHBpbjJbY10scGluM1tjXTsKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2ZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIGEgcGFydGljdWxhciAKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2ludGVnZXIKCQlmb3IoaT0wO2k8YztpKyspewoJCQlwaW5baV09MC41KigxLjAvZG91YmxlKGMpKTsgICAgICAgICAgICAgLy9wcm9iYWJpbGl0eSB0aGF0IHRoZSBzdWJzZXQgd29uJ3QgYmUKCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VtcHR5PTAuNQoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tdWx0aXBsaWVkIGJ5IHByb2JhYmlsdHkgb2YgYSBwYXJ0aWN1bGFyIAoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb2xvdXIgdG8gYmUgc2VsZWN0ZWQuIAoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMgaXMgYXBwbGljYWJsZSBmb3IgYWxsIGNvbG91cnMgZXhjZXB0IDEKCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAKCQl9CgkJcGluWzFdPTAuNSooMS4wL2RvdWJsZShjKSkrMC41OyAgICAgICAgICAgIC8vZm9yIGNvbG91ciAxOiBwcm9iYWJhYmlsaXR5IHRoYXQgdGhlIHN1YnNldAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3dpbGwgYmUgZW1wdHkgd2lsbCBhbHNvIGJlIGFkZGVkIHRvIDAuNSooMS9jKQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAoJCQoJCWxvbmcgZG91YmxlIGFuc1trXSxvdXQ9MDsKCQkKICAgICAgICBmb3IoaT0wO2k8PWs7aSsrKQogICAgICAgICAgICAgYW5zW2ldPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvc2UgdGhlIG5vLiBvZiBvY2N1cmVuY2VzIG9mIGEgcGFydGljdWxhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2ludGVnZXIgaXMgeCB0aGVuIHRoZSBleHBlY3RlZCBjb2xvdXIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaXMgYW5zW3hdCiAgICAgICAgICAgICAKICAgICAgICBhbnNbMF09MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3IgdGhlIGZpcnN0IG9jY3VyZW5jZSBjYWxjdWxhdGluZyB0aGUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGNvbG91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCWZvcihpPTA7aTxjO2krKyl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCSAgICAJYW5zWzFdPWRvdWJsZShhbnNbMV0pK2RvdWJsZShwaW5baV0pKmRvdWJsZShpKTsgICAKCSAgICAJcGluMltpXT1waW5baV07CgkJfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL25vdyBmb3IgZWFjaCBzdWJzZXF1ZW50IG9jY3VyZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGluZyBhbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJZm9yKGk9MjtpPD1rO2krKyl7CgkJCQogICAgICAgICAgICBmb3IoZT0wO2U8YztlKyspCiAgICAgICAgICAgICAgICAgIHBpbjNbZV09MDsKICAgICAgICAgICAgICAgICAgCgkJCWZvcihqPTA7ajxjO2orKyl7CgkJCQkKCQkJCWZvcihmPTA7ZjxjO2YrKyl7CgkJCQkJCgkJCQkJcGluM1soaipmKSVjXT1kb3VibGUocGluM1soaipmKSVjXSkrZG91YmxlKHBpbltqXSkqZG91YmxlKHBpbjJbZl0pOwoJCQkJfQoJCQl9CiAKCQkJZm9yKHM9MDtzPGM7cysrKXsKCQkJCWFuc1tpXT1kb3VibGUoYW5zW2ldKStkb3VibGUocGluM1tzXSkqZG91YmxlKHMpOwogICAgICAgICAgICAgICAgcGluMltzXT1kb3VibGUocGluM1tzXSk7CgkJCX0KCQl9CgkJCiAgICBhbnNbMF09MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgYW4gaW50ZWdlciBoYXMgemVybyBvY2N1cmVuY2VzIGFucyBpcyAxCiAKIAogCgkJZm9yKGk9MDtpPG47aSsrKXsKCQkJb3V0PWRvdWJsZShvdXQpK2RvdWJsZShhbnNbbm9lW2ldXSk7ICAgICAgICAgICAgICAKIAoJCX0KCQkgc3RkOjpjb3V0IDw8c3RkOjpzZXRwcmVjaXNpb24oMTApIDw8IG91dCA8PCAiXG4iOwoJfQogICAgcmV0dXJuIDA7Cn0gIAo=