#include <bits/stdc++.h>
using namespace std;
vector<int> rows;
vector<int> cols;
bool xin[3605];
bool yin[3605];
int dp1[3605][1802];
int dp2[3605][1802];
long long C[5000][5000];
long long fac[5000];
const long long MOD = 998244353;
int main() {
  fac[0] = 1;
  for (int i = 0; i < 4000; i++) {
    C[i][0] = 1;
    C[i][i] = 1;
    if (i) {
      fac[i] = (i * fac[i - 1]) % MOD;
    }
  }
  for (int i = 1; i < 4000; i++) {
    for (int j = 1; j < i; j++) {
      C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
      C[i][j] %= MOD;
    }
  }
  int h, w, n;
  cin >> h >> w >> n;
  for (int i = 0; i < n; i++) {
    int x1, y1;
    int x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    xin[x1] = true;
    xin[x2] = true;
    yin[y1] = true;
    yin[y2] = true;
  }
  for (int i = 1; i <= h; i++) {
    if (!xin[i]) {
      rows.push_back(i);
    }
  }
  for (int i = 1; i <= w; i++) {
    if (!yin[i]) {
      cols.push_back(i);
    }
  }
  dp1[0][0] = 1;
  for (int i = 1; i <= rows.size(); i++) {
    for (int j = 0; j <= h; j++) {
      if (i == 1) {
        dp1[i][j] = dp1[i - 1][j];
      } else if (rows[i - 1] - rows[i - 2] == 1) {
        if (j) {
          dp1[i][j] = dp1[i - 1][j] + dp1[i - 2][j - 1];
          dp1[i][j] %= MOD;
        } else {
          dp1[i][j] = dp1[i - 1][j];
        }
      } else {
        dp1[i][j] = dp1[i - 1][j];
      }
    }
  }
  dp2[0][0] = 1;
  for (int i = 1; i <= cols.size(); i++) {
    for (int j = 0; j <= w; j++) {
      if (i == 1) {
        dp2[i][j] = dp2[i - 1][j];
      } else if (cols[i - 1] - cols[i - 2] == 1) {
        if (j) {
          dp2[i][j] = dp2[i - 1][j] + dp2[i - 2][j - 1];
          dp2[i][j] %= MOD;
        } else {
          dp2[i][j] = dp2[i - 1][j];
        }
      } else {
        dp2[i][j] = dp2[i - 1][j];
      }
    }
  }
  long long res = 0;
  int weff = rows.size();
  int heff = cols.size();
  for (int i = 0; i <= h; i++) {
    for (int j = 0; j <= w; j++) {
      long long a = dp1[weff][i];
      long long b = dp2[heff][j];
      if (weff - 2 * i < 0) continue;
      long long c = C[weff - 2 * i][j];
      if (heff - 2 * j < 0) continue;
      long long d = C[heff - 2 * j][i];
      long long e = fac[i];
      long long f = fac[j];
      long long mul = 1;
      mul *= a;
      mul %= MOD;
      mul *= b;
      mul %= MOD;
      mul *= c;
      mul %= MOD;
      mul *= d;
      mul %= MOD;
      mul *= e;
      mul %= MOD;
      mul *= f;
      mul %= MOD;
      res += mul;
      res %= MOD;
    }
  }
  cout << res << endl;
}
