#include using namespace std; constexpr long long mod = 998244353; long long pow_mod(long long x, long long y, long long p) { long long result = 1; while (y > 0) { if ((y & 1) == 1) { result *= x; result %= p; } y >>= 1; x *= x; x %= p; } return result; } void solve() { int n, k; cin >> n >> k; vector> lr; lr.reserve(n); for (int i = 0; i < n; i++) { int l, r; cin >> l >> r; lr.emplace_back(l, r); } sort(lr.begin(), lr.end()); long long ans = 1; // hpの中に入っているのはr priority_queue, greater> hp; for (auto &[l, r]: lr) { // すでに退出した人を削除 while (!hp.empty() && hp.top() <= l) { hp.pop(); } // hp.size() が今店内にいる人 ans *= max(0LL, k - (long long)hp.size()); ans %= mod; hp.push(r); } ans = pow_mod(k, n, mod) - ans; if (ans < 0) { ans += mod; } cout << ans << '\n'; } int main() { int q = 1; // cin >> q; while (q--) { solve(); } }