#include <bits/stdc++.h>
using namespace std;
int __i__, __j__;
class _Debug {
 public:
  template <typename T>
  _Debug& operator,(T val) {
    cout << val << endl;
    return *this;
  }
};
int r[3600], c[3600];
vector<int> a, b;
long long int C[3601][3601], fact[3601];
long long int dpa[3601][1801], dpb[3601][1801];
int main() {
  int i, j;
  int h, w, n;
  int r1, c1, r2, c2;
  scanf("%d %d %d", &h, &w, &n);
  fill(r, r + h, 1), fill(c, c + w, 1);
  for (i = 0; i < n; i++) {
    scanf("%d %d %d %d", &r1, &c1, &r2, &c2);
    r1--, c1--, r2--, c2--;
    r[r1] = r[r2] = 0, c[c1] = c[c2] = 0;
  }
  for (i = 0; i < h; i++) {
    if (r[i]) {
      if ((i == h - 1) || !r[i + 1])
        a.push_back(1);
      else
        a.push_back(0);
    }
  }
  for (i = 0; i < w; i++) {
    if (c[i]) {
      if ((i == w - 1) || !c[i + 1])
        b.push_back(1);
      else
        b.push_back(0);
    }
  }
  dpa[0][0] = 1;
  for (i = 0; i < a.size(); i++) {
    for (j = 0; j <= a.size() / 2; j++) {
      dpa[i + 1][j] = dpa[i][j];
      if ((i > 0) && !a[i - 1] && (j > 0)) dpa[i + 1][j] += dpa[i - 1][j - 1];
      dpa[i + 1][j] %= 998244353;
    }
  }
  dpb[0][0] = 1;
  for (i = 0; i < b.size(); i++) {
    for (j = 0; j <= b.size() / 2; j++) {
      dpb[i + 1][j] = dpb[i][j];
      if ((i > 0) && !b[i - 1] && (j > 0)) dpb[i + 1][j] += dpb[i - 1][j - 1];
      dpb[i + 1][j] %= 998244353;
    }
  }
  long long int ans = 0;
  C[0][0] = 1;
  for (i = 1; i <= max(a.size(), b.size()); i++) {
    C[i][0] = 1;
    for (j = 1; j <= i; j++)
      C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % 998244353;
  }
  fact[0] = 1;
  for (i = 1; i <= max(a.size(), b.size()); i++)
    fact[i] = (i * fact[i - 1]) % 998244353;
  for (i = 0; i <= a.size() / 2; i++) {
    for (j = 0; j <= b.size() / 2; j++) {
      long long int c =
          ((long long int)dpa[a.size()][i] * dpb[b.size()][j]) % 998244353;
      long long int d =
          ((long long int)C[a.size() - 2 * i][j] * C[b.size() - 2 * j][i]) %
          998244353;
      long long int e = ((long long int)fact[i] * fact[j]) % 998244353;
      ans += ((c * d) % 998244353) * e, ans %= 998244353;
    }
  }
  printf("%d\n", (int)ans);
  return 0;
}
