#include <bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
long long int inv[300001], fac[300001];
long long int mi(long long int a, long long int b) {
  long long int ans = 1;
  while (b) {
    if (b & 1) ans *= a;
    a *= a;
    a %= mod;
    b >>= 1;
    ans %= mod;
  }
  return ans % mod;
}
long long Inv(long long n) { return mi(n, mod - 2); }
inline long long int c(long long int k, long long int n) {
  if (n < 0 || k < 0 || k > n) return 0;
  return (fac[n]) * inv[k] % mod * inv[n - k] % mod;
}
void init() {
  fac[0] = 1;
  for (int i = 1; i < 300001; i++) {
    fac[i] = (fac[i - 1]) * i % mod;
  }
  inv[0] = 1;
  inv[300000] = Inv(fac[300000]);
  for (int i = 299999; i >= 1; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
}
struct p {
  int x, p;
} e;
int cmp(p i, p j) {
  if (i.x == j.x) return i.p < j.p;
  return i.x < j.x;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  int n, k, u = 0;
  init();
  cin >> n >> k;
  long long ans = 0;
  vector<p> v;
  for (int i = 0; i < n; i++)
    cin >> e.x, e.p = 0, v.push_back(e), cin >> e.x, e.p = 1, v.push_back(e);
  sort(v.begin(), v.end(), cmp);
  for (int i = 0; i < 2 * n; i++)
    if (v[i].p)
      u--;
    else
      u++, ans += c(k - 1, u - 1);
  cout << ans % mod;
}
