#include <bits/stdc++.h>
using namespace std;
int n, m, k, v[2001][2001], p[2001], mo;
bool fg;
int main() {
  scanf("%d%d", &n, &m);
  if (n < m) {
    fg = true;
    swap(n, m);
  }
  scanf("%d", &k);
  int i, j;
  for (i = 1; i <= k; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    if (fg) swap(x, y);
    scanf("%d", &v[x][y]);
  }
  scanf("%d", &mo);
  p[0] = 1;
  for (i = 1; i <= 1000; i++) p[i] = (p[i - 1] << 1) % mo;
  if ((n + m) & 1) {
    puts("0");
    return 0;
  }
  bool flag = false;
  int ans = 1;
  for (i = 1; i <= n; i++) {
    int cnt = 0, num = 1;
    for (j = 1; j <= m; j++)
      if (v[i][j] != 0) {
        num *= v[i][j];
        cnt++;
      }
    if (!flag && cnt == 0) {
      flag = true;
      continue;
    }
    if (cnt == m) {
      if (num == 1) {
        puts("0");
        return 0;
      }
    } else
      ans = 1ll * ans * p[m - cnt - 1] % mo;
  }
  printf("%d\n", ans);
  return 0;
}
