using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, k) = (c[0], c[1]); var map = NArr(n); var mod = 998_244_353; var list = new List(); for (var i = 0; i < n; ++i) { list.Add(new Pair(1, map[i][0])); list.Add(new Pair(0, map[i][1])); } list.Sort(); var tmp = k; var ans = 1L; foreach (var li in list) { if (li.Kind == 1) { ans = ans * tmp % mod; --tmp; } else ++tmp; } WriteLine((Exp(k, n, mod) + mod - ans) % mod); } class Pair : IComparable { public int Kind; public int Time; public Pair(int pos, int val) { Kind = pos; Time = val; } public int CompareTo(Pair b) { var d = Time.CompareTo(b.Time); if (d != 0) return d; return Kind.CompareTo(b.Kind); } } static long Exp(long n, long k, int mod) { if (k == 0) return 1; if (k == 1) return n % mod; var half = Exp(n, k / 2, mod); var result = (half * half) % mod; return ((k % 2) == 0) ? result : ((result * n) % mod); } }