#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int M = 3600 + 10;
int w, h, mx, n, r[M], c[M], cntx, cnty;
long long int fac[M], inv[M], g[M][M], f[M][M], ans;
long long int qpow(long long int a, long long int b) {
  long long int y = 1;
  for (; b; a = a * a % mod, b >>= 1)
    if (b & 1) y = y * a % mod;
  return y;
}
long long int C(int a, int b) {
  return fac[a] * inv[b] % mod * inv[a - b] % mod;
}
long long int cal(int a, int b) {
  return g[w][a] * C(w - cnty - 2 * a, b) % mod * f[h][b] % mod *
         C(h - cntx - 2 * b, a) % mod * fac[a] % mod * fac[b] % mod;
}
int main(int argc, char const *argv[]) {
  scanf("%d%d%d", &h, &w, &n);
  for (int i = 1; i <= n; i++) {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    r[x1] = r[x2] = c[y1] = c[y2] = 1;
  }
  mx = max(h, w);
  fac[0] = 1;
  for (int i = 1; i <= mx; i++) fac[i] = fac[i - 1] * i % mod;
  inv[mx] = qpow(fac[mx], mod - 2);
  for (int i = mx; i >= 1; i--) inv[i - 1] = inv[i] * i % mod;
  for (int i = 1; i <= h; i++) cntx += r[i];
  for (int i = 1; i <= w; i++) cnty += c[i];
  for (int i = 0; i <= h; i++) f[i][0] = 1;
  for (int i = 2; i <= h; i++)
    for (int j = 1; 2 * j <= i; j++)
      if (r[i] || r[i - 1])
        f[i][j] = f[i - 1][j];
      else
        f[i][j] = (f[i - 1][j] + f[i - 2][j - 1]) % mod;
  for (int i = 0; i <= w; i++) g[i][0] = 1;
  for (int i = 2; i <= w; i++)
    for (int j = 1; 2 * j <= i; j++)
      if (c[i] || c[i - 1])
        g[i][j] = g[i - 1][j];
      else
        g[i][j] = (g[i - 1][j] + g[i - 2][j - 1]) % mod;
  for (int i = 0; i <= h && 2 * i <= w; i++)
    for (int j = 0; j <= w && 2 * j <= h; j++)
      if (2 * i + j <= w - cnty && i + 2 * j <= h - cntx)
        ans = (ans + cal(i, j)) % mod;
  printf("%lld\n", ans);
  return 0;
}
