#include using namespace std; #include using namespace atcoder; using mint=modint998244353; //1000000007; using ll=long long; using pp=pair; #define sr string #define vc vector #define db double #define fi first #define se second #define rep(i,n) for(int i=0;i<(int)n;i++) #define pb push_back #define all(v) v.begin(),v.end() #define pque priority_queue #define bpc(a) __builtin_popcount(a) ll mpow(ll a,ll t,ll m){ if(t==0)return 1%m; ll res=mpow(a,t/2,m); res=res*res%m; if(t&1)res*=a; return res%m; } int main(){ ll n,k;cin>>n>>k; vcv; rep(i,n){ int l,r;cin>>l>>r; v.pb({l,1}); v.pb({r,-1}); } sort(all(v)); ll m=998244353; ll ans=1; int now=0; for(auto [z,t]:v){ if(t==1){ ans*=k-now; ans%=m; now++; } else now--; } ans=(mpow(k,n,m)-ans+m)%m; cout<