#include <algorithm>
#include <iostream>
#include <cmath>
#include <cstring>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <climits>
#define ll long long
#define ul unsigned long long
#define forn(i,a,b) for(int i = a; i < b; i++)
#define boost ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb push_back
#define fr first
#define sc second
#define MAX 1000001
#define N 400001
#define mod 1000000007
using namespace std;
ul fac[N+2];
void calc()
{
fac[0] = 1;
forn(i,1,N+1)
{
fac[i] = fac[i-1]*i%mod;
//cout << i << " " << fac[i] << endl;
fac[i]%=mod;
}
}
ul power(ul x, ul y, ul p)
{
ul res = 1; // Initialize result
x = x % p; // Update x if it is more than or
// equal to p
while (y > 0)
{
// If y is odd, multiply x with result
if (y & 1)
res = (res*x) % p;
// y must be even now
y = y>>1; // y = y/2
x = (x*x) % p;
}
return res;
}
ul modInverse(ul n, ul p)
{
return power(n, p-2, p);
}
ul nCr(ul n, ul r, ul p)
{
if(n == 0) return 0;
if(r < 0) return 1;
if(n < r) return 0;
if (r==0)
return 1;
return (fac[n]* modInverse(fac[r], p) % p *
modInverse(fac[n-r], p) % p) % p;
}
bool cmp(ul x, const pair<ul,ul> &p2)
{
return x<p2.fr;
}
bool cmp1(const pair<ul,ul> &p1, const pair<ul,ul> &p2)
{
if(p1.fr == p2.fr)
return p1.sc<p2.sc;
return p1.fr<p2.fr;
}
int main()
{
boost;
int test;
cin >> test;
calc();
while(test--)
{
ul n, k;
cin >> n >> k;
vector<pair<ul,ul> > seg(n);
forn(i,0,n) cin >> seg[i].fr >> seg[i].sc;
if(k == 1)
{
cout << n << endl;
continue;
}
sort(seg.begin(), seg.end(), cmp1);
ul ans = 0;
forn(i,0,n)
{
ul x = upper_bound(seg.begin()+i+1, seg.end(), seg[i].sc, cmp) - seg.begin() - i - 1;
//cout << i << " " << x << "\n";
ans += nCr(n-i-1,k-1,mod) - nCr(x,k-1,mod);
//cout << ans << endl;
ans %= mod;
}
cout << ans%mod << endl;
}
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxjbGltaXRzPgoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBmb3JuKGksYSxiKSBmb3IoaW50IGkgPSBhOyBpIDwgYjsgaSsrKQojZGVmaW5lIGJvb3N0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZnIgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBNQVggMTAwMDAwMQojZGVmaW5lIE4gNDAwMDAxCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1bCBmYWNbTisyXTsKCnZvaWQgY2FsYygpCnsKICAgIGZhY1swXSA9IDE7CiAgICBmb3JuKGksMSxOKzEpCiAgICB7CiAgICAgICAgZmFjW2ldID0gZmFjW2ktMV0qaSVtb2Q7CiAgICAgICAgLy9jb3V0IDw8IGkgPDwgIiAiICA8PCBmYWNbaV0gPDwgZW5kbDsKICAgICAgICBmYWNbaV0lPW1vZDsKICAgIH0KfQoKdWwgcG93ZXIodWwgeCwgdWwgeSwgdWwgcCkKewogICAgdWwgcmVzID0gMTsgICAgICAvLyBJbml0aWFsaXplIHJlc3VsdAoKICAgIHggPSB4ICUgcDsgIC8vIFVwZGF0ZSB4IGlmIGl0IGlzIG1vcmUgdGhhbiBvcgogICAgLy8gZXF1YWwgdG8gcAoKICAgIHdoaWxlICh5ID4gMCkKICAgIHsKICAgICAgICAvLyBJZiB5IGlzIG9kZCwgbXVsdGlwbHkgeCB3aXRoIHJlc3VsdAogICAgICAgIGlmICh5ICYgMSkKICAgICAgICAgICAgcmVzID0gKHJlcyp4KSAlIHA7CgogICAgICAgIC8vIHkgbXVzdCBiZSBldmVuIG5vdwogICAgICAgIHkgPSB5Pj4xOyAvLyB5ID0geS8yCiAgICAgICAgeCA9ICh4KngpICUgcDsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCnVsIG1vZEludmVyc2UodWwgbiwgdWwgcCkKewogICAgcmV0dXJuIHBvd2VyKG4sIHAtMiwgcCk7Cn0KCnVsIG5Dcih1bCBuLCB1bCByLCB1bCBwKQp7CiAgICBpZihuID09IDApIHJldHVybiAwOwogICAgaWYociA8IDApIHJldHVybiAxOwogICAgaWYobiA8IHIpIHJldHVybiAwOwogICAgaWYgKHI9PTApCiAgICAgICAgcmV0dXJuIDE7CiAgICByZXR1cm4gKGZhY1tuXSogbW9kSW52ZXJzZShmYWNbcl0sIHApICUgcCAqCiAgICAgICAgICAgIG1vZEludmVyc2UoZmFjW24tcl0sIHApICUgcCkgJSBwOwp9Cgpib29sIGNtcCh1bCB4LCBjb25zdCBwYWlyPHVsLHVsPiAmcDIpCnsKICAgIHJldHVybiB4PHAyLmZyOwp9Cgpib29sIGNtcDEoY29uc3QgcGFpcjx1bCx1bD4gJnAxLCBjb25zdCBwYWlyPHVsLHVsPiAmcDIpCnsKICAgIGlmKHAxLmZyID09IHAyLmZyKQogICAgICAgIHJldHVybiBwMS5zYzxwMi5zYzsKICAgIHJldHVybiBwMS5mcjxwMi5mcjsKfQoKaW50IG1haW4oKQp7CiAgICBib29zdDsKICAgIGludCB0ZXN0OwogICAgY2luID4+IHRlc3Q7CiAgICBjYWxjKCk7CiAgICB3aGlsZSh0ZXN0LS0pCiAgICB7CiAgICAgICAgdWwgbiwgazsKICAgICAgICBjaW4gPj4gbiA+PiBrOwogICAgICAgIHZlY3RvcjxwYWlyPHVsLHVsPiA+IHNlZyhuKTsKICAgICAgICBmb3JuKGksMCxuKSBjaW4gPj4gc2VnW2ldLmZyID4+IHNlZ1tpXS5zYzsKICAgICAgICBpZihrID09IDEpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8IG4gPDwgZW5kbDsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHNvcnQoc2VnLmJlZ2luKCksIHNlZy5lbmQoKSwgY21wMSk7CiAgICAgICAgdWwgYW5zID0gMDsKICAgICAgICBmb3JuKGksMCxuKQogICAgICAgIHsKICAgICAgICAgICAgdWwgeCA9IHVwcGVyX2JvdW5kKHNlZy5iZWdpbigpK2krMSwgc2VnLmVuZCgpLCBzZWdbaV0uc2MsIGNtcCkgLSBzZWcuYmVnaW4oKSAtIGkgLSAxOwogICAgICAgICAgICAvL2NvdXQgPDwgaSA8PCAiICIgPDwgeCA8PCAiXG4iOwogICAgICAgICAgICBhbnMgKz0gbkNyKG4taS0xLGstMSxtb2QpIC0gbkNyKHgsay0xLG1vZCk7CiAgICAgICAgICAgIC8vY291dCA8PCBhbnMgPDwgZW5kbDsKICAgICAgICAgICAgYW5zICU9IG1vZDsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBhbnMlbW9kIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=