#include <bits/stdc++.h>
using namespace std;
long long mod = 998244353;
long long columns[3600][1801] = {0};
long long rows[3600][1801] = {0};
bool pr[3600] = {false};
bool pc[3600] = {false};
long long factorial[3601];
long long inv[3601];
long long power(long long x, long long y, long long p) {
  long long res = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  int h, w, n;
  cin >> h >> w >> n;
  int ac = w;
  int ar = h;
  factorial[0] = 1;
  inv[0] = 1;
  factorial[1] = 1;
  inv[1] = 1;
  for (int i = 2; i <= 3600; i++) {
    factorial[i] = (i * factorial[i - 1]) % mod;
    inv[i] = power(factorial[i], mod - 2, mod);
  }
  for (int i = 0; i < n; i++) {
    int r1, c1, r2, c2;
    cin >> r1 >> c1 >> r2 >> c2;
    r1--;
    c1--;
    r2--;
    c2--;
    if (r1 == r2) {
      pr[r1] = true;
      pc[c1] = true;
      pc[c2] = true;
      ac -= 2;
      ar--;
    } else {
      pc[c1] = true;
      pr[r1] = true;
      pr[r2] = true;
      ar -= 2;
      ac--;
    }
  }
  int mr = ar / 2;
  int mc = ac / 2;
  rows[0][0] = 1;
  if (pr[0]) {
    if (h > 1) {
      rows[1][0] = 1;
    }
  } else {
    if (h > 1) {
      rows[1][0] = 1;
      if (!pr[1]) {
        rows[1][1] = 1;
      }
    }
  }
  for (int i = 2; i < h; i++) {
    rows[i][0] = 1;
    for (int a = 1; a <= (i + 1) / 2; a++) {
      rows[i][a] = rows[i - 1][a];
      if (!pr[i] && !pr[i - 1]) {
        rows[i][a] = (rows[i][a] + rows[i - 2][a - 1]) % mod;
      }
    }
  }
  columns[0][0] = 1;
  if (pc[0]) {
    if (w > 1) {
      columns[1][0] = 1;
    }
  } else {
    if (w > 1) {
      columns[1][0] = 1;
      if (!pc[1]) {
        columns[1][1] = 1;
      }
    }
  }
  for (int i = 2; i < w; i++) {
    columns[i][0] = 1;
    for (int a = 1; a <= (i + 1) / 2; a++) {
      columns[i][a] = columns[i - 1][a];
      if (!pc[i] && !pc[i - 1]) {
        columns[i][a] = (columns[i][a] + columns[i - 2][a - 1]) % mod;
      }
    }
  }
  long long ans = 0;
  for (int i = 0; i <= mr; i++) {
    for (int a = 0; a <= mc; a++) {
      if (rows[h - 1][i] > 0 && columns[w - 1][a] > 0 && ar - i * 2 >= a &&
          ac - a * 2 >= i) {
        long long curr =
            (((factorial[ar - i * 2] * inv[(ar - i * 2) - a]) % mod) * inv[a]) %
            mod;
        curr =
            (curr * ((((factorial[ac - a * 2] * inv[(ac - a * 2) - i]) % mod) *
                      inv[i]) %
                     mod)) %
            mod;
        curr = (curr * columns[w - 1][a]) % mod;
        curr = (curr * rows[h - 1][i]) % mod;
        curr = ((curr * factorial[a]) % mod) * factorial[i] % mod;
        ans = (ans + curr) % mod;
      }
    }
  }
  cout << ans << "\n";
}
