#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
int sum(int a, int b) { return a + b >= MOD ? a + b - MOD : a + b; }
int sub(int a, int b) { return a - b < 0 ? a - b + MOD : a - b; }
int mul(int a, int b) { return (1LL * a * b) % MOD; }
int power(int a, int p) {
  if (p == 0) return 1;
  int ans = power(a, p / 2);
  ans = mul(ans, ans);
  if (p % 2) ans = mul(ans, a);
  return ans;
}
const int MAXN = 3603;
int row[MAXN], col[MAXN];
int xrow[MAXN][MAXN], xcol[MAXN][MAXN];
int fct[MAXN], inv[MAXN];
int nCr(int n, int r) {
  if (r < 0) return 0;
  if (r > n) return 0;
  return mul(fct[n], mul(inv[r], inv[n - r]));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  fct[0] = 1;
  for (int i = 1; i < MAXN; i++) fct[i] = mul(fct[i - 1], i);
  inv[MAXN - 1] = power(fct[MAXN - 1], MOD - 2);
  for (int i = MAXN - 2; i >= 0; i--) inv[i] = mul(inv[i + 1], i + 1);
  int h, w, n;
  cin >> h >> w >> n;
  while (n--) {
    int r1, c1, r2, c2;
    cin >> r1 >> c1 >> r2 >> c2;
    row[r1] = row[r2] = 1;
    col[c1] = col[c2] = 1;
  }
  xrow[0][0] = 1;
  for (int i = 1; i <= h; i++) {
    xrow[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      xrow[i][j] = xrow[i - 1][j];
      if (i > 1 && row[i - 1] + row[i] == 0) {
        xrow[i][j] = sum(xrow[i][j], xrow[i - 2][j - 1]);
      }
    }
  }
  xcol[0][0] = 1;
  for (int i = 1; i <= w; i++) {
    xcol[i][0] = 1;
    for (int j = 1; j <= i; j++) {
      xcol[i][j] = xcol[i - 1][j];
      if (i > 1 && col[i - 1] + col[i] == 0) {
        xcol[i][j] = sum(xcol[i][j], xcol[i - 2][j - 1]);
      }
    }
  }
  int hh = 0;
  for (int i = 1; i <= h; i++) hh += row[i] == 0;
  int ww = 0;
  for (int i = 1; i <= w; i++) ww += col[i] == 0;
  int ans = 0;
  for (int hori = 0; hori <= hh; hori++) {
    for (int vert = 0; hori + vert * 2 <= hh && hori * 2 + vert <= ww; vert++) {
      int way = mul(xrow[h][vert], xcol[w][hori]);
      way = mul(way, nCr(hh - vert * 2, hori));
      way = mul(way, nCr(ww - hori * 2, vert));
      way = mul(way, mul(fct[hori], fct[vert]));
      ans = sum(ans, way);
    }
  }
  cout << ans << "\n";
  return 0;
}
