#include <bits/stdc++.h>
using namespace std;
const int maxn = 3605;
const int mod = 998244353;
int h, w, n;
bool visx[maxn], visy[maxn];
long long f[maxn][maxn], g[maxn][maxn], fac[maxn], inv_fac[maxn];
inline long long A(int n, int m) {
  if (n < m) return 0;
  return fac[n] * inv_fac[n - m] % mod;
}
int main() {
  fac[0] = fac[1] = inv_fac[0] = inv_fac[1] = 1;
  for (int i = 2; i < maxn; i++) fac[i] = fac[i - 1] * i % mod;
  for (int i = 2; i < maxn; i++)
    inv_fac[i] = (mod - mod / i) * inv_fac[mod % i] % mod;
  for (int i = 2; i < maxn; i++) inv_fac[i] = inv_fac[i] * inv_fac[i - 1] % mod;
  scanf("%d%d%d", &h, &w, &n);
  int a, b, c, d, sumx = 0, sumy = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d%d", &a, &b, &c, &d);
    visx[a] = visx[c] = 1, visy[b] = visy[d] = 1;
  }
  for (int i = 1; i <= h; i++) sumx += !visx[i];
  for (int i = 1; i <= w; i++) sumy += !visy[i];
  f[0][0] = g[0][0] = 1;
  for (int i = 1; i <= h; i++)
    for (int j = 0; j * 2 <= sumx; j++)
      f[i][j] =
          (f[i - 1][j] +
           ((j && i >= 2 && !visx[i] && !visx[i - 1]) ? f[i - 2][j - 1] : 0)) %
          mod;
  for (int i = 1; i <= w; i++)
    for (int j = 0; j * 2 <= sumy; j++)
      g[i][j] =
          (g[i - 1][j] +
           ((j && i >= 2 && !visy[i] && !visy[i - 1]) ? g[i - 2][j - 1] : 0)) %
          mod;
  long long ans = 0;
  for (int i = 0; i * 2 <= sumx; i++)
    for (int j = 0; j * 2 <= sumy; j++)
      ans = (ans + f[h][i] * g[w][j] % mod * A(sumx - 2 * i, j) % mod *
                       A(sumy - 2 * j, i)) %
            mod;
  printf("%lld\n", ans);
  return 0;
}
