#include using namespace std; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); long long w, h; cin >> w >> h; int n; cin >> n; vector x(n), y(n), a(n), b(n); for (int i = 0; i < n; ++i) { cin >> x[i] >> y[i]; --x[i], --y[i]; a[i] = x[i] - y[i]; b[i] = x[i] + y[i]; if ((a[i] - a[0]) & 1) { cout << "0\n"; return 0; } } if (n == 2) { if (x[0] > x[1]) { swap(x[0], x[1]); swap(y[0], y[1]); } if (y[0] > y[1]) { y[0] = h - y[0] - 1; y[1] = h - y[1] - 1; } long long res = 0; if (x[0] - y[0] == x[1] - y[1]) { res += x[1] - x[0] - 1; res += (w - x[1]) * (y[0] + 1); res += (x[0] + 1) * (h - y[1]); } else { if (x[1] - x[0] < y[1] - y[0]) { swap(w, h); swap(x[0], y[0]); swap(x[1], y[1]); } res += y[1] - y[0] - 1; res += y[0] + 1; res += h - y[1]; } cout << res << '\n'; return 0; } set sa(begin(a), end(a)); set sb(begin(b), end(b)); long long min_x = *min_element(begin(x), end(x)); long long max_x = *max_element(begin(x), end(x)); long long min_y = *min_element(begin(y), end(y)); long long max_y = *max_element(begin(y), end(y)); long long min_a = *begin(sa), max_a = *rbegin(sa); long long min_b = *begin(sb), max_b = *rbegin(sb); long long res = 0; if (sa.size() == 1 or sb.size() == 1) { res += (w - max_x) * (min_y + 1); res += (min_x + 1) * (h - max_y); } else if (sa.size() == 2 or sb.size() == 2) { long long da = max_a - min_a; assert(~da & 1); da /= 2; long long db = max_b - min_b; assert(~db & 1); db /= 2; if (sa.size() == 2) { res += max(db - da + 1, 0LL); } else { res += max(da - db + 1, 0LL); } } else { for (int i = 0; i < n; ++i) { if (a[i] != min_a and a[i] != max_a and b[i] != min_b and b[i] != max_b) { cout << "0\n"; return 0; } } res = 1; } cout << res << '\n'; }