using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace a
{
    class Program
    {

        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split();
            int n = int.Parse(s[0]);
            int m = int.Parse(s[1]);
            int[,] a = new int[n, m];
            for (int i = 0; i < n; i++)
            {
                s = Console.ReadLine().Split();
                for (int j = 0; j < m; j++)
                {
                    a[i, j] = int.Parse(s[j]);
                }
            }
            int[,] b = new int[n, m];
            b[0, 0] = a[0, 0];
            for (int i = 1; i < n; i++) b[i, 0] = b[i - 1, 0] + a[i, 0];
            for (int j = 1; j < m; j++) b[0, j] = b[0, j - 1] + a[0, j];
            for (int i = 1; i < n; i++)
            {
                for (int j = 1; j < m; j++)
                {
                    b[i, j] = Math.Min(b[i - 1, j], b[i, j - 1]) + a[i, j];
                }
            }
            int q = int.Parse(Console.ReadLine());
            while (q-- > 0)
            {
                s = Console.ReadLine().Split();
                int x = int.Parse(s[0]) - 1;
                int y = int.Parse(s[1]) - 1;
                int[,] c = new int[n, m];
                c[x, y] = int.MaxValue;
                for(int i = 0; i < x; i++)
                {
                    for(int j = 0; j < m; j++)
                    {
                        c[i, j] = b[i, j];
                    }
                }
                for(int i = x; i < n; i++)
                {
                    for(int j = 0; j < y; j++)
                    {
                        c[i, j] = b[i, j];
                    }
                }
                if (x == 0)
                {
                    for(int j = x + 1; j < m; j++)
                    {
                        c[0, j] = int.MaxValue;
                    }
                }
                else if (y != m - 1)
                {
                    for(int j = y + 1; j < m; j++)
                    {
                        c[x, j] = Math.Min(c[x - 1, j], c[x, j - 1]) + a[x, j];
                    }
                }
                if (y == 0)
                {
                    for (int i = y + 1; i < n; i++)
                    {
                        c[i, 0] = int.MaxValue;
                    }
                }
                else if (x != n - 1)
                {
                    for(int i = x + 1; i < n; i++)
                    {
                        c[i, y] = Math.Min(c[i - 1, y], c[i, y - 1]) + a[i, y];
                    }
                }
                for (int i = x + 1; i < n; i++)
                {
                    for(int j = y + 1; j < m; j++)
                    {
                        c[i, j] = Math.Min(c[i - 1, j], c[i, j - 1]) + a[i, j];
                    }
                }
                Console.WriteLine(c[n - 1, m - 1]);
            }
        }
    }
}