#include //#include using namespace std; //using namespace atcoder; #define all(x) (x).begin(), (x).end() #define rep1(a) for(int i = 0; i < a; i++) #define rep2(i, a) for(int i = 0; i < a; i++) #define rep3(i, a, b) for(int i = a; i < b; i++) #define rep4(i, a, b, c) for(int i = a; i < b; i += c) #define overload4(a, b, c, d, e, ...) e #define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__) #define rrep(i, a, b) for (int i = a; i >= b; i--) #define fore(i, a) for (auto &i : a) #define rfore(a) for(auto i=a.rbegin(), e=a.rend(); i!=e; ++i) #define enld endl #define fix(n) cout << fixed << setprecision(n); #define debug(var) do{std::cout << #var << " : ";view(var);}while(0) template void view(T e){std::cout << e << std::endl;} template void view(const std::vector& v){for(const auto& e : v){ std::cout << e << " "; } std::cout << std::endl;} template void view(const std::vector >& vv){ for(const auto& v : vv){ view(v); } } templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (busing rp_queue=priority_queue,greater>; void fast_io(){cin.tie(nullptr);ios_base::sync_with_stdio(false);} typedef long long ll; typedef unsigned long long ull; const int inf = INT_MAX / 2; const ll infl = 1LL<<60; const ll mod = 1000000007; const int dx[8] = {0, 1, 0,-1, 1, 1,-1,-1}; const int dy[8] = {1, 0,-1, 0, 1,-1, 1,-1}; int main() { fast_io(); const ll mymod = 998244353; int H,W,K; cin >> H >> W >> K; vector>value(H,vector(W,0)); rep(K) { ll x,y,v; cin >> x >> y >> v; x--, y--; value[x][y] = v; } ll ans = 0; rep(i,H) rep(j,W) { rep(x,H) rep(y,W) if(x+y>=i+j && x-y>=i-j) { ans += value[x][y]; ans%=mymod; } } cout << ans << endl; }