using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, m) = (c[0], c[1]); var map = NArr(m); var query = NArr(n); WriteLine(string.Join("\n", Rect(n, m, map, query))); } static int[] Rect(int n, int m, int[][] map, int[][] query) { var cum = new long[m + 1, m + 1]; for (var i = 0; i < m; ++i) for (var j = 0; j < m; ++j) cum[i + 1, j + 1] = map[i][j]; for (var i = 0; i <= m; ++i) for (var j = 0; j < m; ++j) cum[i, j + 1] += cum[i, j]; for (var i = 0; i < m; ++i) for (var j = 0; j <= m; ++j) cum[i + 1, j] += cum[i, j]; var ans = new int[m + 1, m + 1]; for (var i = 0; i < m; ++i) for (var j = 0; j < m; ++j) for (var x = i + 1; x <= m; ++x) for (var y = j + 1; y <= m; ++y) { if (cum[i, j] - cum[i, y] - cum[x, j] + cum[x, y] == 0) { ++ans[i, j]; --ans[i, y]; --ans[x, j]; ++ans[x, y]; } } for (var i = 0; i <= m; ++i) for (var j = 0; j < m; ++j) ans[i, j + 1] += ans[i, j]; for (var i = 0; i < m; ++i) for (var j = 0; j <= m; ++j) ans[i + 1, j] += ans[i, j]; var r = new int[n]; for (var i = 0; i < n; ++i) r[i] = ans[query[i][0] - 1, query[i][1] - 1]; return r; } }