using System;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Collections.Generic;
using System.Linq;

class cppboljiodcs
{

    static void ucitajMatricu(int[,] matrica, int m, int n)
    {
        string[] s;
        for (int i = 0; i < m; i++)
        {
            s = Console.ReadLine().Split();

            for (int j = 0; j < n; j++)
            {
                matrica[i, j] = int.Parse(s[j]);
            }
        }
    }
    static void ispisiMatricu(int[,] matrica, int n, int m)
    {
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                Console.Write("{0} ", matrica[i, j]);
            }
            Console.WriteLine();
        }
    }
    static void saberiMatricu(ref int[,] matrica, int n, int m, int x, int y)
    {
        /*for (int i = 1; i < n; i++)
        {
            matrica[i, 0] = matrica[i - 1, 0] + matrica[i, 0];
        }
        for (int i = 1; i < m; i++)
        {
            matrica[0, i] = matrica[0, i - 1] + matrica[0, i];
        }
        for (int i = n-1; i > 0; i--)
        {
            for (int j = m-1; j > 0; j--)
            {
                if (matrica[i - 1, j] < matrica[i, j - 1])
                    matrica[i, j] = matrica[i, j] + matrica[i - 1, j];
                else
                    matrica[i, j] = matrica[i, j] + matrica[i, j - 1];
            }
        }*/
        matrica[x, y] = int.MaxValue;
        for (int j = m - 2; j >= 0; j--) // za donju ivicu matrice
        {
            if (matrica[n - 1, j] == int.MaxValue)
                continue;
            else if (matrica[n - 1, j + 1] == int.MaxValue)
                matrica[n - 1, j] = int.MaxValue;
            else
                matrica[n - 1, j] = matrica[n - 1, j] + matrica[n - 1, j + 1];
        }

        for (int i = n - 2; i >= 0; i--) // za sve osim zadnjeg reda
        {
            for (int j = m - 1; j >= 0; j--)
            {
                if (i == x && j == y)
                    continue;
                else if (j == m - 1) // ako je zadnja kolona
                {
                    if (matrica[i + 1, j] == int.MaxValue)
                        matrica[i, j] = int.MaxValue;
                    else
                        matrica[i, j] = matrica[i, j] + matrica[i + 1, j];
                }
                else if (matrica[i + 1, j] < matrica[i, j + 1])
                {
                    matrica[i, j] = matrica[i, j] + matrica[i + 1, j];
                }
                else
                {
                    matrica[i, j] = matrica[i, j] + matrica[i, j + 1];
                }
            }
        }

    }
    static void Main()
    {
        string[] prviRed = Console.ReadLine().Split();
        int n = int.Parse(prviRed[0]);
        int m = int.Parse(prviRed[1]);

        int[,] matrica = new int[n, m];
        ucitajMatricu(matrica, n, m);


        int[,] matricaSabrana = new int[n, m];
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                matricaSabrana[i, j] = matrica[i, j];
            }
        }



        int broj_scenarija = int.Parse(Console.ReadLine());
        for (int scenario = 0; scenario < broj_scenarija; scenario++)
        {
            int zbir = 0;
            string[] unos = Console.ReadLine().Split();
            int x = int.Parse(unos[0]);
            int y = int.Parse(unos[1]);
            x--;
            y--;

            saberiMatricu(ref matricaSabrana, n, m, x, y);
            /*Console.WriteLine("Ispisana:");
            ispisiMatricu(matricaSabrana, n, m);
            Console.WriteLine();*/


            int i = 0, j = 0;
            while (true)
            {
                zbir += matrica[i, j];

                if (i == n - 1 && j == m - 1) // ako dodje do kraja
                    break;

                // ako je desno manje nego levo, ide desno ako moze
                if (i != n - 1 && j != m - 1 && matricaSabrana[i + 1, j] <= matricaSabrana[i, j + 1])
                {
                    if (matricaSabrana[i + 1, j] == matricaSabrana[i, j + 1])
                    {
                        if (matrica[i + 1, j] > matrica[i, j + 1] || i == n - 1 || i == x - 1 && j == y || x == n - 1 && i == n - 2 && j <= y)
                            j++;
                        else
                            i++;
                    }
                    else if (i == x - 1 && j == y || x == n - 1 && i == n - 2 && j <= y) // ako ne moze da ide desno zbog uslova
                        j++;
                    else
                        i++;
                }
                // ako je dole manje nego desno, ide dole ako moze
                else
                {
                    if (j == m - 1 || j == y - 1 && i == x || y == m - 1 && j == m - 2 && i <= x) // ako ne moze levo zbog uslova
                        i++;
                    else
                        j++;
                }
            }
            Console.WriteLine(zbir);

            for (int k = 0; k < n; k++)
            {
                for (int u = 0; u < m; u++)
                {
                    matricaSabrana[k, u] = matrica[k, u];
                }
            }
        }

    }
}