import std.stdio, std.string, std.conv;
import std.algorithm, std.array;
auto solve(string s_) {
    auto HWN = s_.split.map!(to!int)();
    immutable H=HWN[0], W=HWN[1], N=HWN[2];
    bool[int[2]] ps;
    foreach(_;0..N) {
        auto ab = readln.split.map!(to!int);
        immutable a=ab[0], b=ab[1];
        ps[[a,b]]=true;
    }
    bool[int[2]] u;
    auto c=new long[10];
    foreach(ref v,_;ps) {
        foreach(a;max(1,v[0]-2)..min(H-1,v[0]+1))
            foreach(b;max(1,v[1]-2)..min(W-1,v[1]+1)) {
                immutable int[2] p = [a,b];
                if(p !in u) {
                    u[p]=true;
                    int n=0;
                    foreach(i;a..a+3) foreach(j;b..b+3) {
                        immutable int[2] q = [i,j];
                        if(q in ps) ++n;
                    }
                    ++c[n];
                }
            }
    }
    c[0] = (H-2)*(W-2).to!long()-u.length;
    return c.map!(to!string).join("\n");
}
void main(){ for(string s; (s=readln.chomp()).length;) writeln(solve(s)); }