using System;
using System.Collections.Generic;
using System.Linq;

namespace Petlja3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] s1 = Console.ReadLine().Split(' ');
            int n = int.Parse(s1[0]);
            int m = int.Parse(s1[1]);
            int[,] doha = new int[n, m];
            string[] s2;
            for (int i = 0; i < n; i++)
            {
                s2 = Console.ReadLine().Split(' ');
                for (int j = 0; j < m; j++)
                {
                    doha[i, j] = int.Parse(s2[j]);
                }
            }

            int[,] najmanjiZbirPolja = new int[n, m];
            int[,] najboljiSmerOd = new int[n, m];//1 je odozgo, 2 je sleva
            int[,] najboljiPutSmerDo = new int[n, m];//1 je dole, 2 je desno
            int polje1;
            int polje2;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (i > 0 && j > 0)
                    {
                        polje1 = doha[i, j] + najmanjiZbirPolja[i - 1, j];
                        polje2 = doha[i, j] + najmanjiZbirPolja[i, j - 1];
                        if (polje1 <= polje2)
                        {
                            najmanjiZbirPolja[i, j] = polje1;
                            najboljiSmerOd[i, j] = 1;
                        }
                        else
                        {
                            najmanjiZbirPolja[i, j] = polje2;
                            najboljiSmerOd[i, j] = 2;
                        }
                    }
                    else if (i > 0)
                    {
                        najmanjiZbirPolja[i, j] = doha[i, j] + najmanjiZbirPolja[i - 1, j];
                        najboljiSmerOd[i, j] = 1;
                    }
                    else if (j > 0)
                    {
                        najmanjiZbirPolja[i, j] = doha[i, j] + najmanjiZbirPolja[i, j - 1];
                        najboljiSmerOd[i, j] = 2;
                    }
                    else
                        najmanjiZbirPolja[i, j] = doha[i, j];
                }
            }
            int kordX = n - 1;
            int kordY = m - 1;
            while (kordX > 0 || kordY > 0)
            {
                if (najboljiSmerOd[kordX, kordY] == 1)
                {
                    kordX--;
                    najboljiPutSmerDo[kordX, kordY] = 1;
                }
                else
                {
                    kordY--;
                    najboljiPutSmerDo[kordX, kordY] = 2;
                }
            }

            int q = int.Parse(Console.ReadLine());
            int[,] najmanjiZbirPoljaPomocni = new int[n, m];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    najmanjiZbirPoljaPomocni[i, j] = najmanjiZbirPolja[i, j];
                }
            }
            string[] s3;
            for (int p = 0; p < q; p++)
            {
                s3 = Console.ReadLine().Split(' ');
                int x = int.Parse(s3[0]) - 1;
                int y = int.Parse(s3[1]) - 1;

                if (najboljiPutSmerDo[x, y] == 0)
                {
                    Console.WriteLine(najmanjiZbirPolja[n - 1, m - 1]);
                }
                else
                {
                    int t = 0;
                    int g = 0;
                    najmanjiZbirPoljaPomocni[x, y] = -1;
                    for (int i = x; i < n; i++)
                    {
                        for (int j = y; j < m; j++)
                        {
                            if (i > x && j > y)
                            {
                                if (najmanjiZbirPoljaPomocni[i - 1, j] != -1)
                                    t = doha[i, j] + najmanjiZbirPoljaPomocni[i - 1, j];
                                else
                                    t = -1;
                                if (najmanjiZbirPoljaPomocni[i, j - 1] != -1)
                                    g = doha[i, j] + najmanjiZbirPoljaPomocni[i, j - 1];
                                else
                                    g = -1;
                            }
                            else if (i > x)
                            {
                                if (najmanjiZbirPoljaPomocni[i - 1, j] != -1)
                                    t = doha[i, j] + najmanjiZbirPoljaPomocni[i - 1, j];
                                else
                                    t    = -1;
                                if(y == 0)
                                    g = -1;
                                else
                                    g = doha[i, j] + najmanjiZbirPoljaPomocni[i, j - 1];
                            }
                            else if(j > y)
                            {
                                if (x == 0)
                                    t = -1;
                                else
                                    t = doha[i, j] + najmanjiZbirPoljaPomocni[i - 1, j];
                                if (najmanjiZbirPoljaPomocni[i, j - 1] != -1)
                                    g = doha[i, j] + najmanjiZbirPoljaPomocni[i, j - 1];
                                else
                                    g = -1;
                            }
                            if (i != x || j != y)
                            {
                                if (t == -1)
                                    najmanjiZbirPoljaPomocni[i, j] = g;
                                else if (g == -1)
                                    najmanjiZbirPoljaPomocni[i, j] = t;
                                else if (t < g)
                                    najmanjiZbirPoljaPomocni[i, j] = t;
                                else
                                    najmanjiZbirPoljaPomocni[i, j] = g;
                            }
                        }
                    }
                    Console.WriteLine(najmanjiZbirPoljaPomocni[n - 1, m - 1]);
                    for (int i = 0; i < n; i++)
                    {
                        for (int j = 0; j < m; j++)
                        {
                            najmanjiZbirPoljaPomocni[i, j] = najmanjiZbirPolja[i, j];
                        }
                    }
                }
            }
        }
    }
}