#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define newl '\n'
 
using namespace std;
const ll INF = 4e18;
 
 
int n,m,q;
std::vector<std::vector<char>> a;
std::vector<std::vector<int>> s,lim;
std::vector<int> w,h,stone,ans;
 
void readData(){
    std::cin >> n >> m >> q;
    a.assign(n + 1,std::vector<char>(m + 1,0));
    s.assign(n + 1,std::vector<int>(m + 1,0));
    lim.assign(n + 1,std::vector<int>(m + 1,0));
    ans.assign(q + 1,0);
    w.assign(q + 1,0);
    h.assign(q + 1,0);
    stone.assign(q + 1,0);
    for(int i = 1;i <= n;++i){
        for(int j = 1;j <= m;++j){
            std::cin >> a[i][j];
        }
    }
    for(int i = 1;i <= q;++i){
        std::cin >> w[i] >> h[i] >> stone[i];
    }
}
void calc(int k){
    std::vector<int> prev(m + 1,0);
    for(int i = 1;i <= n;++i){
        for(int j = 1;j <= m;++j){
            s[i][j] = s[i - 1][j];
            s[i][j] += a[i][j] == '#';
            while(s[i][j] - s[prev[j]][j] > k){
                ++prev[j];
            }
            lim[i][j] = i - prev[j];
//            std::cout << lim[i][j] << " ";
        }
//        std::cout << newl;
    }
}
void calc_ans(std::vector<int> query_index){
    std::vector<std::vector<int>> mat(n + 3,std::vector<int>(m + 3,0));
    for(int i = 1;i <= n;++i){
        std::stack<int> st;
        st.push(0);
        for(int j = 1;j <= m;++j){
            while(st.top() != 0 && lim[i][j] <= lim[i][st.top()]){
//                int it = st.top();
                int v = lim[i][st.top()];
                st.pop();
                int v1 = std::max(lim[i][st.top()],lim[i][j]);
                int len = j - st.top() - 1;
                ++mat[v][len];
                --mat[v1][len];
//                std::cout << "IMP " << v << " " << v1 << " " << len << newl;
            }
            st.push(j);
        }
        while(st.top() != 0){
//            int it = st.top();
            int v = lim[i][st.top()];
            st.pop();
            int v1 = lim[i][st.top()];
            int len = m - st.top();
//            std::cout << "IMP " << v << " " << v1 << " " << len << newl;
            ++mat[v][len];
            --mat[v1][len];
        }
    }
    for(int i = n;i >= 1;--i){
        for(int j = 1;j <= m;++j){
            mat[i][j] += mat[i + 1][j];
        }
    }
    for(int i = 1;i <= n;++i){
        int total = 0;
        for(int j = m;j >= 1;--j){
            total += mat[i][j];
            mat[i][j] = mat[i][j + 1] + total;
        }
    }
    for(int cur : query_index){
        ans[cur] = mat[w[cur]][h[cur]];
    }
}
void solve(){
    for(int k = 0;k <= 5;++k){
        std::vector<int> query_index;
        for(int i = 1;i <= q;++i){
            if(stone[i] == k){
                query_index.emplace_back(i);
            }
        }
        calc(k);
        calc_ans(query_index);
    }
    for(int i = 1;i <= q;++i){
        std::cout << ans[i] << newl;
    }
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    readData();
    solve();
    return 0;
}
/*
5 6 1
1 2 5
2 3 5
1 4 10
4 3 2
3 5 3
4 5 8
1 5
 
4 3 1
1 2 3
1 3 4
1 4 5
1 3
 
 
*/