#include <bits/stdc++.h>
using namespace std;
const int maxn = 101000;
static int A[maxn], B[maxn], n, m;
static int P, K;
bool flag;
int main() {
  scanf("%d%d", &n, &m);
  flag = false;
  if (n % 2 != m % 2) {
    printf("0\n");
    return 0;
  }
  if (n < m) {
    swap(n, m);
    flag = true;
  }
  scanf("%d", &K);
  for (int i = 1, x, y, Z; i <= K; i++) {
    scanf("%d%d%d", &x, &y, &Z);
    if (flag) swap(x, y);
    if (Z == -1) {
      B[x] ^= 1;
    }
    A[x]++;
  }
  for (int i = 1; i <= n; i++)
    if (A[i] == m) {
      if (B[i] != 1) {
        printf("0\n");
        return 0;
      }
      K--;
    }
  scanf("%d", &P);
  int ans = 1;
  for (int i = 1; i <= n * m - n - m + 1 - K; i++) ans = ans * 2 % P;
  printf("%d\n", ans);
  return 0;
}
