#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 300005;
const int MOD = 998244353;
const double eps = 1e-8;
const double PI = acos(-1.0);
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long qpow(long long a, long long n, long long p = MOD) {
  long long r = 1 % p;
  for (a %= p; n; a = a * a % p, n >>= 1)
    if (n & 1) r = r * a % p;
  return r;
}
long long inv(long long x, long long p = MOD) {
  return x <= 1 ? 1 : inv(p % x, p) * (p - p / x) % p;
}
int l[MAXN], r[MAXN], a[25], b[25];
long long fac[MAXN], ifac[MAXN];
long long del[MAXN], sum[45][MAXN];
int n, m;
inline long long C(int n, int m) {
  if (n < m || m < 0) return 0;
  return fac[n] * ifac[m] % MOD * ifac[n - m] % MOD;
}
void solve() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &l[i], &r[i]);
    ++del[l[i]], --del[r[i] + 1];
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &a[i], &b[i]);
  }
  for (int i = 1; i <= n; i++) {
    del[i] = (del[i] + del[i - 1]);
  }
  ifac[0] = fac[0] = 1;
  for (int i = 1; i <= n; i++) {
    fac[i] = fac[i - 1] * i % MOD;
  }
  ifac[n] = qpow(fac[n], MOD - 2);
  for (int i = n - 1; i > 0; i--) {
    ifac[i] = ifac[i + 1] * (i + 1) % MOD;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= 2 * m; j++) {
      sum[j][i] = (sum[j][i - 1] + C(del[i] - j, i - j)) % MOD;
    }
  }
  long long ans = 0;
  for (int bs = 0; bs < (1 << m); bs++) {
    set<int> s;
    int L = 1, R = n;
    for (int i = 1; i <= m; i++) {
      if (bs & (1 << (i - 1))) {
        s.insert(a[i]);
        s.insert(b[i]);
        L = max(l[a[i]], L), L = max(l[b[i]], L);
        R = min(R, r[a[i]]), R = min(R, r[b[i]]);
      }
    }
    int sz = s.size();
    long long tmp = ((L <= R) ? (sum[sz][R] - sum[sz][L - 1] + MOD) % MOD : 0);
    if (__builtin_popcount(bs) & 1)
      ans = (ans - tmp + MOD) % MOD;
    else
      ans = (ans + tmp) % MOD;
  }
  printf("%lld\n", ans);
}
int main(int argc, char* argv[]) {
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
