#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int N, treeNum, year;
vector<int> tree[15][15];
vector<int> die[15][15];
int food[15][15];
int add_food[15][15];
int ans;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
int safe(int x, int y)
{
if(x >= 1 && y >= 1 && x <= N && y <= N)
{
return 1;
}
else
{
return 0;
}
}
void spring()
{
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
if(tree[i][j].size() != 0)
{
// 죽는 나무 인덱스 저장
int eraseIdx = -1;
// 하나의 칸에 여러 개의 나무가 있다면, 나이가 어린 나무부터 양분을 먹는다.
sort(tree[i][j].begin(), tree[i][j].end());
for(int k = 0; k < tree[i][j].size(); k++)
{
// 나이만큼 양분이 있어야 가능
if(food[i][j] - tree[i][j][k] >= 0)
{
// 양분 먹음
food[i][j] -= tree[i][j][k];
// 나무가 자신의 나이만큼 양분을 먹고, 나이가 1 증가한다.
tree[i][j][k] += 1;
}
else
{
eraseIdx = k;
break;
}
}
if(eraseIdx != -1)
{
// 죽은 나무의 나이 저장
for(int k = eraseIdx; k < tree[i][j].size(); k++)
{
die[i][j].push_back(tree[i][j][k]);
}
tree[i][j].erase(tree[i][j].begin()+eraseIdx, tree[i][j].end());
}
}
}
}
}
void summer()
{
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
if(die[i][j].size() != 0)
{
// 각각의 죽은 나무마다 나이를 2로 나눈 값이 나무가 있던 칸에 양분으로 추가된다.
for(int k = 0; k < die[i][j].size(); k++)
{
food[i][j] += die[i][j][k] / 2;
}
die[i][j].clear();
}
}
}
}
void fall()
{
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
if(tree[i][j].size() != 0)
{
// 번식하는 나무는 나이가 5의 배수이어야 하며, 인접한 8개의 칸에 나이가 1인 나무가 생긴다.
for(int k = 0; k < tree[i][j].size(); k++)
{
if(tree[i][j][k] % 5 == 0)
{
for(int m = i-1; m <= i+1; m++)
{
for(int n = j-1; n <= j+1; n++)
{
if(m == i && n == j)
{
continue;
}
if(safe(m, n) == 1)
{
tree[m][n].push_back(1);
}
}
}
}
}
}
}
}
}
void winter()
{
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
food[i][j] += add_food[i][j];
}
}
}
int main(void)
{
// freopen("B15685_input.txt", "r", stdin);
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> treeNum >> year;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
food[i][j] = 5;
cin >> add_food[i][j];
}
}
for(int i = 1; i <= treeNum; i++)
{
int x, y, age;
cin >> x >> y >> age;
tree[x][y].push_back(age);
}
while(year--)
{
spring();
summer();
fall();
winter();
}
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= N; j++)
{
ans += tree[i][j].size();
}
}
cout << ans;
return 0;
}