#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 100;
const long long int base = 3;
const long long int mod = 1e9 + 7;
const long long int inf = 1e17 + 100;
vector<int> vl, vr, all;
long long int c[N];
long long int pw(long long int x, long long int n) {
  if (n == 0) return 1;
  x %= mod;
  long long int y = (x * x) % mod;
  if (n % 2 == 0) return pw(y, n / 2);
  return (pw(y, n / 2) * x) % mod;
}
inline long long int C(int n, int k) {
  if (k > n) return 0;
  long long int res = 1;
  for (int i = 0; i < k; i++) res *= n - i;
  for (int i = 1; i <= k; i++) res /= i;
  return res;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    int l, r;
    cin >> l >> r;
    vl.push_back(l);
    vr.push_back(r);
    all.push_back(l);
    all.push_back(r);
    all.push_back(r + 1);
  }
  all.push_back(0);
  sort(vl.begin(), vl.end());
  sort(vr.begin(), vr.end());
  sort(all.begin(), all.end());
  long long int m = 1, k2 = 1;
  for (int i = 1; i <= k; i++) m = (m * i) % mod;
  k2 = m;
  c[k] = 1;
  for (int i = k + 1; i <= n; i++) {
    m = (((m * i) % mod) * pw(i - k, mod - 2)) % mod;
    c[i] = (m * pw(k2, mod - 2)) % mod;
  }
  long long int ans = 0;
  for (int i = 0; i < all.size() - 1; i++) {
    long long int x = all[i], y = (all[i + 1] - all[i] + mod) % mod;
    if (y == 0) continue;
    int p = lower_bound(vr.begin(), vr.end(), x) - vr.begin();
    int t = n - (upper_bound(vl.begin(), vl.end(), x) - vl.begin());
    ans = (ans + ((c[n - p - t] * y) % mod)) % mod;
  }
  cout << ans << endl;
  return 0;
}
