#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
const int mod = 998244353;
int inc(int x, int y) { return (x + y >= mod) ? (x + y - mod) : (x + y); }
int del(int x, int y) { return (x - y < 0) ? (x - y + mod) : (x - y); }
namespace math {
int qpow(int a, int x, int mo) {
  int res = 1;
  while (x) {
    if (x & 1) res = 1ll * res * a % mod;
    a = 1ll * a * a % mod;
    x >>= 1;
  }
  return res;
}
int Fac[N], invFac[N];
void Finit(int n) {
  Fac[0] = 1;
  invFac[0] = 1;
  for (int i = 1; i <= n; i++) Fac[i] = 1ll * Fac[i - 1] * i % mod;
  invFac[n] = qpow(Fac[n], mod - 2, mod);
  for (int i = n - 1; i >= 1; i--)
    invFac[i] = 1ll * invFac[i + 1] * (i + 1) % mod;
}
int C(int n, int m) {
  if (m == 0) return 1;
  if (n < m || m < 0) return 0;
  return (int)(1ll * Fac[n] * invFac[m] % mod * invFac[n - m] % mod);
}
}  // namespace math
int read() {
  int x = 0, f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + c - '0', c = getchar();
  return x * f;
}
int d[N], a[N], b[N], l[N], r[N];
int sum[N][42];
map<int, int> mp;
int main() {
  int n = read(), m = read();
  math::Finit(n);
  int st = 1 << m;
  for (int i = 1; i <= n; i++) {
    l[i] = read(), r[i] = read();
    d[l[i]]++, d[r[i] + 1]--;
  }
  for (int i = 0; i < m; i++) a[i] = read(), b[i] = read();
  for (int i = 1; i <= n; i++) d[i] += d[i - 1];
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= 2 * m; j++) {
      sum[i][j] = inc(sum[i - 1][j], math::C(d[i] - j, i - j));
    }
  int ans = 0;
  for (int i = 0; i < st; i++) {
    mp.clear();
    int tot = 0;
    int ls = 1, rs = n, f = 1;
    for (int j = 0; j < m; j++)
      if (i & (1 << j)) {
        f *= -1;
        if (!mp[a[j]]) tot++;
        if (!mp[b[j]]) tot++;
        rs = min(rs, min(r[a[j]], r[b[j]]));
        ls = max(ls, max(l[a[j]], l[b[j]]));
        mp[a[j]] = 1;
        mp[b[j]] = 1;
      }
    if (rs >= ls)
      ans = inc(ans, (mod + f * del(sum[rs][tot], sum[ls - 1][tot])) % mod);
  }
  cout << ans << endl;
}
