#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline long long rand(long long x, long long y) {
  return (rng() % (y + 1 - x)) + x;
}
string inline to_string(char c) {
  string second(1, c);
  return second;
}
template <typename T>
inline T gcd(T a, T b) {
  return a == 0 ? b : gcd(b % a, a);
}
long long int h, w, n, fr[(3603)][(3603)], fc[(3603)][(3603)], mod = 998244353;
bool H[3603], W[3603];
long long int first[(3603)], mi[(3603)];
long long int choose(long long int n, long long int k) {
  if (n < k) return 0;
  return first[n] * mi[k] % mod * mi[n - k] % mod;
}
long long int qexp(long long int x, long long int e) {
  if (e == 0) return 1;
  long long int half = qexp(x, e >> 1);
  half *= half, half %= mod;
  if (e & 1) half *= x, half %= mod;
  return half;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> h >> w >> n;
  first[0] = first[1] = 1, mi[0] = mi[1] = 1;
  for (long long int i = (2); i <= (long long int)((3603) - 1); ++i)
    first[i] = first[i - 1] * i % mod, mi[i] = qexp(first[i], mod - 2);
  for (long long int i = (0); i <= (long long int)(n - 1); ++i) {
    long long int a, b, c, d;
    cin >> a >> b >> c >> d;
    H[a] = H[c] = 1, W[b] = W[d] = 1;
  }
  long long int rows = count(H, H + 3603, 1);
  long long int cols = count(W, W + 3603, 1);
  for (long long int i = (0); i <= (long long int)(h); ++i) fr[i][0] = 1;
  for (long long int i = (0); i <= (long long int)(w); ++i) fc[i][0] = 1;
  for (long long int i = (1); i <= (long long int)(h); ++i) {
    for (long long int j = (1); j <= (long long int)(h); ++j)
      if (j * 2 <= i) {
        fr[i][j] = fr[i - 1][j];
        if (!H[i] && !H[i - 1]) fr[i][j] += fr[i - 2][j - 1], fr[i][j] %= mod;
      }
  }
  for (long long int i = (1); i <= (long long int)(w); ++i) {
    for (long long int j = (1); j <= (long long int)(w); ++j)
      if (j * 2 <= i) {
        fc[i][j] = fc[i - 1][j];
        if (!W[i] && !W[i - 1]) fc[i][j] += fc[i - 2][j - 1], fc[i][j] %= mod;
      }
  }
  long long int ans = 0;
  for (long long int dh = (0); dh <= (long long int)((3603) - 1); ++dh)
    for (long long int dv = (0); dv <= (long long int)((3603) - 1); ++dv) {
      long long int R = fr[h][dv] * choose(h - rows - dv * 2, dh) % mod;
      long long int C = fc[w][dh] * choose(w - cols - dh * 2, dv) % mod;
      ans += R * C % mod * first[dh] % mod * first[dv] % mod, ans %= mod;
    }
  cout << ans << '\n';
}
