using System;
using System.Collections.Generic;
using System.Linq;
using static System.Console;
using static System.Convert;
using static System.Math;
//using Debug;
//using static System.Globalization.CultureInfo;
using System.Text;
class Program
{
    static void Main(string[] args)
    {
        Solve();
        //WriteLine(Solve());
    }
    static void Solve()
    {
        var nmq = Input.ar;
        var gred = Enumerable.Repeat(0, nmq[0]).Select(_ => new int[nmq[1]]).ToArray();
        for(var i = 0; i < nmq[0]; i++)
        {
            var s = ReadLine();
            for (var j = 0; j < nmq[1]; j++)
                gred[i][j] = s[j] - '0';
        }
        var vexsum = new int[nmq[0] + 1, nmq[1] + 1];
        for (var i = 1; i <= nmq[0]; i++)
            for (var j = 1; j <= nmq[1]; j++)
                vexsum[i, j] = ToInt32(gred[i - 1][j - 1] == 1) + vexsum[i - 1, j] + vexsum[i, j - 1] - vexsum[i - 1, j - 1];
        var xsum = new int[nmq[0] + 1, nmq[1] + 1];
        var ysum = new int[nmq[0] + 1, nmq[1] + 1];
        for (var i = 1; i <= nmq[0]; i++)
            for (var j = 1; j <= nmq[1]; j++)
            {
                xsum[i, j] = ToInt32(i != 1 && gred[i - 2][j - 1] == 1 && gred[i - 1][j - 1] == 1) + xsum[i - 1, j] + xsum[i, j - 1] - xsum[i - 1, j - 1];
                ysum[i, j] = ToInt32(j != 1 && gred[i - 1][j - 2] == 1 && gred[i - 1][j - 1] == 1) + ysum[i - 1, j] + ysum[i, j - 1] - ysum[i - 1, j - 1];
            }
        var res = new List<int>(nmq[2]);
        while (nmq[2]-- > 0)
        {
            var xy = Input.ar;
            var v = vexsum[xy[2], xy[3]] + vexsum[xy[0] - 1, xy[1] - 1] - vexsum[xy[0] - 1, xy[3]] - vexsum[xy[2], xy[1] - 1];
            var e = 0;
            if (xy[0] != xy[2])
                e += xsum[xy[2], xy[3]] - xsum[xy[0], xy[3]] - xsum[xy[2], xy[1] - 1] + xsum[xy[0], xy[1] - 1];
            if (xy[1] != xy[3])
                e += ysum[xy[2], xy[3]] - ysum[xy[0] - 1, xy[3]] - ysum[xy[2], xy[1]] + ysum[xy[0] - 1, xy[1]];
            res.Add(v - e);
        }
        WriteLine(string.Join("\n", res));
    }
}

public class Input
{
    public static string read => ReadLine().Trim();
    public  static int[] ar => Array.ConvertAll(read.Split(' '), int.Parse);
    public  static int num => ToInt32(read);
    public static long[] arL => Array.ConvertAll(read.Split(' '), long.Parse);
    public  static long numL => ToInt64(read);
    public static char[][] gred(int h) 
        => Enumerable.Repeat(0, h).Select(v => read.ToCharArray()).ToArray();
    public static int[][] ar2D(int num)
        => Enumerable.Repeat(0, num).Select(_ => ar).ToArray();
    public static long[][] arL2D(int num)
        => Enumerable.Repeat(0, num).Select(_ => arL).ToArray();
    public static T getValue<T>(string g)
    {
        var t = typeof(T);
        if (t == typeof(int))
            return (T)(object)int.Parse(g);
        if (t == typeof(long))
            return (T)(object)long.Parse(g);
        if (t == typeof(string))
            return (T)(object)g;
        if (t == typeof(char))
            return (T)(object)char.Parse(g);
        if (t == typeof(double))
            return (T)(object)double.Parse(g);
        if (t == typeof(bool))
            return (T)(object)bool.Parse(g);
        return default(T);
    }
    public const long Inf = (long)1e18;
    public const double eps = 1e-6;
    public  const string alfa = "abcdefghijklmnopqrstuvwxyz";
    public  const int MOD = 1000000007;
}


Measured memory_bytes: 93032