#include <cstdio>
#include <iostream>
using namespace std;
const int N = 114;
const long long Mod = 998244353;
int x;
int y;
int z;
long long dp[N][N][N];
int n;
bool flag[N][N][N];
int main () {
freopen ("problema.in", "r", stdin);
freopen ("problema.out", "w", stdout);
cin >> x >> y >> z;
cin >> n;
int a, b, c;
for (int i = 1; i <= n; i++) {
cin >> a >> b >> c;
flag[a][b][c] = true;
}
dp[0][0][0] = 1;
for (int i = 0; i <= x; i++) {
for (int j = 0; j <= y; j++) {
for (int k = 0; k <= z; k++) {
if (flag[i][j][k]) {
continue;
}
for (int t = i - 1; t >= 0;) {
t &= i;
dp[i][j][k] += dp[t][j][k];
dp[i][j][k] %= Mod;
t--;
}
for (int t = j - 1; t >= 0;) {
t &= j;
dp[i][j][k] += dp[i][t][k];
dp[i][j][k] %= Mod;
t--;
}
for (int t = k - 1; t >= 0;) {
t &= k;
dp[i][j][k] += dp[i][j][t];
dp[i][j][k] %= Mod;
t--;
}
}
}
}
cout << dp[x][y][z] << endl;
return 0;
}