using System;

namespace P_2022_2_3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Adat bekeres
            string[] temp1 = Console.ReadLine().Split(' ');
            int n = Convert.ToInt32(temp1[0]);
            int m = Convert.ToInt32(temp1[1]);

            //Matrix elkeszitese
            int[,] matrix = new int[n, m];
            for (int i = 0; i < n; i++)
            {
                string[] temp2 = Console.ReadLine().Split(' ');
                for (int j = 0; j < m; j++)
                    matrix[i, j] = Convert.ToInt32(temp2[j]);
            }

            //Blokadok elkeszitese
            int ut = Convert.ToInt32(Console.ReadLine());
            int[,,] lezar = new int[ut, n, m];
            for (int i = 0; i < ut; i++)
            {
                string[] temp3 = Console.ReadLine().Split(' ');
                lezar[i, Convert.ToInt32(temp3[0]) - 1, Convert.ToInt32(temp3[1]) - 1] = 1;
            }

            //Ut keresese
            int[] eredmeny = new int[ut];

            for (int i = 0; i < ut; i++)
            {
                int pozx = 0;
                int pozy = 0;
                int visszalepes = 0;
                int[] utolsolepes = new int[0];
                int lepes = 0;
                eredmeny[i] += matrix[pozy, pozx];
                while (pozy != n - 1 || pozx != m - 1)//Lepkedunk addig ameddig el nem erjuk celunk
                {
                    if (pozy + 1 != n && pozx + 1 != m)//Ha nem vagyunk a varos szelen
                    {
                        if (matrix[pozy + 1, pozx] < matrix[pozy, pozx + 1] && lezar[i, pozy + 1, pozx] == 0)
                        {//Ha az also kisebb es nincs blokaldolva
                            pozy++;
                            Array.Resize(ref utolsolepes, lepes + 1);
                            utolsolepes[lepes] = 1;
                            lepes++;
                        }
                        else if (lezar[i, pozy, pozx + 1] == 0)
                        {//Ha a bal kisebb es nincs blokaldolva
                            pozx++;
                            Array.Resize(ref utolsolepes, lepes + 1);
                            utolsolepes[lepes] = 2;
                            lepes++;
                        }
                        else
                        {//Ha a bal kisebb de blokaldolva van
                            pozy++;
                            Array.Resize(ref utolsolepes, lepes + 1);
                            utolsolepes[lepes] = 1;
                            lepes++;
                        }
                    }
                    else if (pozy + 1 == n && pozx + 1 != m)//A varos alja
                    {
                        if (lezar[i, pozy, pozx + 1] == 0)
                        {//Ha a bal nincs blokaldolva
                            pozx++;
                            Array.Resize(ref utolsolepes, lepes + 1);
                            utolsolepes[lepes] = 2;
                            lepes++;
                        }
                        else
                        {//Ha a bal blokaldolva van ez miatt zsakutca
                            lezar[i, pozy, pozx] = 1;
                            if (utolsolepes[lepes-1] == 1)
                            {
                                eredmeny[i] -= matrix[pozy, pozx];
                                pozy--;
                            }
                            else if (utolsolepes[lepes-1] == 2)
                            {
                                eredmeny[i] -= matrix[pozy, pozx];
                                pozx--;
                            }
                            Array.Resize(ref utolsolepes, lepes-1);
                            lepes--;
                            visszalepes = 1;
                        }
                    }
                    else if (pozy + 1 != n && pozx + 1 == m)//A varos bal szele
                    {
                        if (lezar[i, pozy + 1, pozx] == 0)
                        {//Ha az alja nincs blokaldolva
                            pozy++;
                            Array.Resize(ref utolsolepes, lepes + 1);
                            utolsolepes[lepes] = 1;
                            lepes++;
                        }
                        else
                        {//Ha az alja blokaldolva van ez miatt zsakutca
                            lezar[i, pozy, pozx] = 1;
                            if (utolsolepes[lepes-1] == 1)
                            {
                                eredmeny[i] -= matrix[pozy, pozx];
                                pozy--;
                            }
                            else if (utolsolepes[lepes-1] == 2)
                            {
                                eredmeny[i] -= matrix[pozy, pozx];
                                pozx--;
                            }
                            Array.Resize(ref utolsolepes, lepes-1);
                            lepes--;
                            visszalepes = 1;
                        }
                    }
                    if (visszalepes == 0)
                        eredmeny[i] += matrix[pozy, pozx];
                    else
                        visszalepes = 0;
                }
            }
            for (int i = 0; i < ut; i++)
                Console.WriteLine(eredmeny[i]);
        }
    }
}