#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 5;
#define int long long
int n, m, k, ok[maxn];
vector<vector<int>> pre;
pair<int, int> dd[maxn];
struct node{
int i, j, u, v;
node() {
i = j = 1e9;
u = v = 0;
}
};
node val[maxn];
int get(int i, int j, int u, int v) {
if(i > u || j > v) return 0;
return pre[u][v] - pre[u][j - 1]
- pre[i - 1][v] + pre[i - 1][j - 1];
}
bool okk(int x, int i, int j, int u, int v) {
int fi = dd[x].first;
int se = dd[x].second;
if(fi < i || fi > u || se < j || se > v)
return false;
return true;
}
signed main () {
//freopen("hcn.inp", "r", stdin);
//freopen("hcn.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> k;
vector<vector<int>> a;
a.resize(n + 1);
pre.resize(n + 1);
for(int i = 0; i <= n; i++)
a[i].resize(m + 1),
pre[i].resize(m + 1);
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cin >> a[i][j];
int x = a[i][j];
pre[i][j] = pre[i - 1][j]
+ pre[i][j - 1]
- pre[i - 1][j - 1];
if(!ok[x]) {
pre[i][j]++;
ok[x] = 1;
dd[x] = {i, j};
}
val[x].i = min(val[x].i, i);
val[x].j = min(val[x].j, j);
val[x].u = max(val[x].u, i);
val[x].v = max(val[x].v, j);
}
}
for(int i = 1; i <= k; i++)
ok[i] = 0;
for(int num = 1; num <= k; num++) {
int i = val[num].i;
int j = val[num].j;
int u = val[num].u;
int v = val[num].v;
int ans = get(i + 1, j + 1, u - 1, v - 1);
int ii = dd[num].first;
int jj = dd[num].second;
if(ii >= i + 1 && ii <= u - 1 &&
jj >= j + 1 && jj <= v - 1)
ans--;
ok[num] = 1;
// Trường hợp không có interior
if(i + 1 > u - 1 || j + 1 > v - 1) {
vector<int> P;
for(int hang = i; hang <= u; hang++) {
for(int cot = j; cot <= v; cot++) {
if(!ok[a[hang][cot]]) {
ans++;
ok[a[hang][cot]] = 1;
P.push_back(a[hang][cot]);
}
}
}
cout << ans << " ";
for(auto x : P)
ok[x] = 0;
ok[num] = 0;
continue;
}
vector<int> P;
// hang(i)
for(int cot = j + 1; cot <= v - 1; cot++) {
int x = a[i][cot];
if(!ok[x] && !okk(x, i + 1, j + 1, u - 1, v - 1)) {
ans++;
ok[x] = 1;
P.push_back(x);
continue;
}
if(!ok[x] &&
(x != a[i + 1][cot] || i + 1 >= u)) {
ans++;
ok[x] = 1;
P.push_back(x);
}
}
// hang(u)
for(int cot = j + 1; cot <= v - 1; cot++) {
int x = a[u][cot];
if(!ok[x] && !okk(x, i + 1, j + 1, u - 1, v - 1)) {
ans++;
ok[x] = 1;
P.push_back(x);
continue;
}
if(!ok[x] &&
(x != a[u - 1][cot] || u - 1 <= i)) {
ans++;
ok[x] = 1;
P.push_back(x);
}
}
// cot(j)
for(int hang = i + 1; hang <= u - 1; hang++) {
int x = a[hang][j];
if(!ok[x] && !okk(x, i + 1, j + 1, u - 1, v - 1)) {
ans++;
ok[x] = 1;
P.push_back(x);
continue;
}
if(!ok[x] &&
(x != a[hang][j + 1] || j + 1 >= v)) {
ans++;
ok[x] = 1;
P.push_back(x);
}
}
// cot(v)
for(int hang = i + 1; hang <= u - 1; hang++) {
int x = a[hang][v];
if(!ok[x] && !okk(x, i + 1, j + 1, u - 1, v - 1)) {
ans++;
ok[x] = 1;
P.push_back(x);
continue;
}
if(!ok[x] &&
(x != a[hang][v - 1] || v - 1 <= j)) {
ans++;
ok[x] = 1;
P.push_back(x);
}
}
// 4 góc
for(auto hang : {i, u}) {
for(auto cot : {j, v}) {
if(!ok[a[hang][cot]]) {
ans++;
P.push_back(a[hang][cot]);
ok[a[hang][cot]] = 1;
}
}
}
cout << ans << ' ';
for(auto x : P)
ok[x] = 0;
ok[num] = 0;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMmU2ICsgNTsKI2RlZmluZSBpbnQgbG9uZyBsb25nCgppbnQgbiwgbSwgaywgb2tbbWF4bl07CnZlY3Rvcjx2ZWN0b3I8aW50Pj4gcHJlOwpwYWlyPGludCwgaW50PiBkZFttYXhuXTsKCnN0cnVjdCBub2RlewogICAgaW50IGksIGosIHUsIHY7CiAgICBub2RlKCkgewogICAgICAgIGkgPSBqID0gMWU5OwogICAgICAgIHUgPSB2ID0gMDsKICAgIH0KfTsKCm5vZGUgdmFsW21heG5dOwoKaW50IGdldChpbnQgaSwgaW50IGosIGludCB1LCBpbnQgdikgewogICAgaWYoaSA+IHUgfHwgaiA+IHYpIHJldHVybiAwOwogICAgcmV0dXJuIHByZVt1XVt2XSAtIHByZVt1XVtqIC0gMV0KICAgICAgICAgLSBwcmVbaSAtIDFdW3ZdICsgcHJlW2kgLSAxXVtqIC0gMV07Cn0KCmJvb2wgb2trKGludCB4LCBpbnQgaSwgaW50IGosIGludCB1LCBpbnQgdikgewogICAgaW50IGZpID0gZGRbeF0uZmlyc3Q7CiAgICBpbnQgc2UgPSBkZFt4XS5zZWNvbmQ7CgogICAgaWYoZmkgPCBpIHx8IGZpID4gdSB8fCBzZSA8IGogfHwgc2UgPiB2KQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKfQoKc2lnbmVkIG1haW4gKCkgewogICAgLy9mcmVvcGVuKCJoY24uaW5wIiwgInIiLCBzdGRpbik7CiAgICAvL2ZyZW9wZW4oImhjbi5vdXQiLCAidyIsIHN0ZG91dCk7CgogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgY2luID4+IG4gPj4gbSA+PiBrOwoKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYTsKICAgIGEucmVzaXplKG4gKyAxKTsKICAgIHByZS5yZXNpemUobiArIDEpOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKQogICAgICAgIGFbaV0ucmVzaXplKG0gKyAxKSwKICAgICAgICBwcmVbaV0ucmVzaXplKG0gKyAxKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbTsgaisrKSB7CgogICAgICAgICAgICBjaW4gPj4gYVtpXVtqXTsKCiAgICAgICAgICAgIGludCB4ID0gYVtpXVtqXTsKCiAgICAgICAgICAgIHByZVtpXVtqXSA9IHByZVtpIC0gMV1bal0KICAgICAgICAgICAgICAgICAgICAgICsgcHJlW2ldW2ogLSAxXQogICAgICAgICAgICAgICAgICAgICAgLSBwcmVbaSAtIDFdW2ogLSAxXTsKCiAgICAgICAgICAgIGlmKCFva1t4XSkgewogICAgICAgICAgICAgICAgcHJlW2ldW2pdKys7CiAgICAgICAgICAgICAgICBva1t4XSA9IDE7CiAgICAgICAgICAgICAgICBkZFt4XSA9IHtpLCBqfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFsW3hdLmkgPSBtaW4odmFsW3hdLmksIGkpOwogICAgICAgICAgICB2YWxbeF0uaiA9IG1pbih2YWxbeF0uaiwgaik7CiAgICAgICAgICAgIHZhbFt4XS51ID0gbWF4KHZhbFt4XS51LCBpKTsKICAgICAgICAgICAgdmFsW3hdLnYgPSBtYXgodmFsW3hdLnYsIGopOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykKICAgICAgICBva1tpXSA9IDA7CgogICAgZm9yKGludCBudW0gPSAxOyBudW0gPD0gazsgbnVtKyspIHsKCiAgICAgICAgaW50IGkgPSB2YWxbbnVtXS5pOwogICAgICAgIGludCBqID0gdmFsW251bV0uajsKICAgICAgICBpbnQgdSA9IHZhbFtudW1dLnU7CiAgICAgICAgaW50IHYgPSB2YWxbbnVtXS52OwoKICAgICAgICBpbnQgYW5zID0gZ2V0KGkgKyAxLCBqICsgMSwgdSAtIDEsIHYgLSAxKTsKCiAgICAgICAgaW50IGlpID0gZGRbbnVtXS5maXJzdDsKICAgICAgICBpbnQgamogPSBkZFtudW1dLnNlY29uZDsKCiAgICAgICAgaWYoaWkgPj0gaSArIDEgJiYgaWkgPD0gdSAtIDEgJiYKICAgICAgICAgICBqaiA+PSBqICsgMSAmJiBqaiA8PSB2IC0gMSkKICAgICAgICAgICAgYW5zLS07CgogICAgICAgIG9rW251bV0gPSAxOwoKICAgICAgICAvLyBUcsaw4budbmcgaOG7o3Aga2jDtG5nIGPDsyBpbnRlcmlvcgogICAgICAgIGlmKGkgKyAxID4gdSAtIDEgfHwgaiArIDEgPiB2IC0gMSkgewoKICAgICAgICAgICAgdmVjdG9yPGludD4gUDsKCiAgICAgICAgICAgIGZvcihpbnQgaGFuZyA9IGk7IGhhbmcgPD0gdTsgaGFuZysrKSB7CiAgICAgICAgICAgICAgICBmb3IoaW50IGNvdCA9IGo7IGNvdCA8PSB2OyBjb3QrKykgewoKICAgICAgICAgICAgICAgICAgICBpZighb2tbYVtoYW5nXVtjb3RdXSkgewogICAgICAgICAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgb2tbYVtoYW5nXVtjb3RdXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIFAucHVzaF9iYWNrKGFbaGFuZ11bY290XSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBjb3V0IDw8IGFucyA8PCAiICI7CgogICAgICAgICAgICBmb3IoYXV0byB4IDogUCkKICAgICAgICAgICAgICAgIG9rW3hdID0gMDsKCiAgICAgICAgICAgIG9rW251bV0gPSAwOwoKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8aW50PiBQOwoKICAgICAgICAvLyBoYW5nKGkpCiAgICAgICAgZm9yKGludCBjb3QgPSBqICsgMTsgY290IDw9IHYgLSAxOyBjb3QrKykgewoKICAgICAgICAgICAgaW50IHggPSBhW2ldW2NvdF07CgogICAgICAgICAgICBpZighb2tbeF0gJiYgIW9rayh4LCBpICsgMSwgaiArIDEsIHUgLSAxLCB2IC0gMSkpIHsKICAgICAgICAgICAgICAgIGFucysrOwogICAgICAgICAgICAgICAgb2tbeF0gPSAxOwogICAgICAgICAgICAgICAgUC5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIW9rW3hdICYmCiAgICAgICAgICAgICAgICh4ICE9IGFbaSArIDFdW2NvdF0gfHwgaSArIDEgPj0gdSkpIHsKCiAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgIG9rW3hdID0gMTsKICAgICAgICAgICAgICAgIFAucHVzaF9iYWNrKHgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBoYW5nKHUpCiAgICAgICAgZm9yKGludCBjb3QgPSBqICsgMTsgY290IDw9IHYgLSAxOyBjb3QrKykgewoKICAgICAgICAgICAgaW50IHggPSBhW3VdW2NvdF07CgogICAgICAgICAgICBpZighb2tbeF0gJiYgIW9rayh4LCBpICsgMSwgaiArIDEsIHUgLSAxLCB2IC0gMSkpIHsKICAgICAgICAgICAgICAgIGFucysrOwogICAgICAgICAgICAgICAgb2tbeF0gPSAxOwogICAgICAgICAgICAgICAgUC5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIW9rW3hdICYmCiAgICAgICAgICAgICAgICh4ICE9IGFbdSAtIDFdW2NvdF0gfHwgdSAtIDEgPD0gaSkpIHsKCiAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgIG9rW3hdID0gMTsKICAgICAgICAgICAgICAgIFAucHVzaF9iYWNrKHgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBjb3QoaikKICAgICAgICBmb3IoaW50IGhhbmcgPSBpICsgMTsgaGFuZyA8PSB1IC0gMTsgaGFuZysrKSB7CgogICAgICAgICAgICBpbnQgeCA9IGFbaGFuZ11bal07CgogICAgICAgICAgICBpZighb2tbeF0gJiYgIW9rayh4LCBpICsgMSwgaiArIDEsIHUgLSAxLCB2IC0gMSkpIHsKICAgICAgICAgICAgICAgIGFucysrOwogICAgICAgICAgICAgICAgb2tbeF0gPSAxOwogICAgICAgICAgICAgICAgUC5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIW9rW3hdICYmCiAgICAgICAgICAgICAgICh4ICE9IGFbaGFuZ11baiArIDFdIHx8IGogKyAxID49IHYpKSB7CgogICAgICAgICAgICAgICAgYW5zKys7CiAgICAgICAgICAgICAgICBva1t4XSA9IDE7CiAgICAgICAgICAgICAgICBQLnB1c2hfYmFjayh4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gY290KHYpCiAgICAgICAgZm9yKGludCBoYW5nID0gaSArIDE7IGhhbmcgPD0gdSAtIDE7IGhhbmcrKykgewoKICAgICAgICAgICAgaW50IHggPSBhW2hhbmddW3ZdOwoKICAgICAgICAgICAgaWYoIW9rW3hdICYmICFva2soeCwgaSArIDEsIGogKyAxLCB1IC0gMSwgdiAtIDEpKSB7CiAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgIG9rW3hdID0gMTsKICAgICAgICAgICAgICAgIFAucHVzaF9iYWNrKHgpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCFva1t4XSAmJgogICAgICAgICAgICAgICAoeCAhPSBhW2hhbmddW3YgLSAxXSB8fCB2IC0gMSA8PSBqKSkgewoKICAgICAgICAgICAgICAgIGFucysrOwogICAgICAgICAgICAgICAgb2tbeF0gPSAxOwogICAgICAgICAgICAgICAgUC5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIDQgZ8OzYwogICAgICAgIGZvcihhdXRvIGhhbmcgOiB7aSwgdX0pIHsKICAgICAgICAgICAgZm9yKGF1dG8gY290IDoge2osIHZ9KSB7CgogICAgICAgICAgICAgICAgaWYoIW9rW2FbaGFuZ11bY290XV0pIHsKICAgICAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgICAgICBQLnB1c2hfYmFjayhhW2hhbmddW2NvdF0pOwogICAgICAgICAgICAgICAgICAgIG9rW2FbaGFuZ11bY290XV0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IGFucyA8PCAnICc7CgogICAgICAgIGZvcihhdXRvIHggOiBQKQogICAgICAgICAgICBva1t4XSA9IDA7CgogICAgICAgIG9rW251bV0gPSAwOwogICAgfQp9Cg==