#include <bits/stdc++.h>

using namespace std;

int n, m;
long long int dp(int bloki, int blokj, vector<vector<long long int>> brljudi)
{
    long long int maxbr=LLONG_MAX;
    long long int resenje[n][m];
    resenje[0][0]=brljudi[0][0];
    brljudi[bloki][blokj]=maxbr;
    int i=1; int j=1;
    while(i<n)
    {
        long long int xi=resenje[i-1][0];
        if(brljudi[i][0]==maxbr)
        {
            for(i; i<n; i++)
            {
                resenje[i][0]=maxbr;
            }
        }
        else
        {
            resenje[i][0]=xi+brljudi[i][0];
        }
        i++;
    }
    while(j<m)
    {
        long long int xj=resenje[0][j-1];
        if(brljudi[0][j]==maxbr)
        {
            for(j; j<m; j++)
            {
                resenje[0][j]=maxbr;
            }
        }
        else
        {
            resenje[0][j]=xj+brljudi[0][j];
        }
        j++;
    }
    for(i=1; i<n; i++)
    {
        for(j=1; j<m; j++)
        {
            if(brljudi[i][j]==maxbr) resenje[i][j]=maxbr;
            else if(resenje[i][j-1]<resenje[i-1][j]) resenje[i][j]=resenje[i][j-1]+brljudi[i][j];
            else resenje[i][j]=resenje[i-1][j]+brljudi[i][j];
        }
    }
    return resenje[n-1][m-1];
}



int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int br;
    cin>>n>>m;
    vector<vector<long long int>> brljudi(n);
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            cin>>br;
            brljudi[i].push_back(br);
        }
    }
    int q, bloki, blokj;
    if(n==2)
    {
        long long int niz1[m], niz2[m];
        niz1[0]=brljudi[0][0];
        niz2[m-1]=brljudi[1][m-1];
        for(int i=1; i<m; i++)
        {
            niz1[i]=niz1[i-1]+brljudi[0][i];
            niz2[m-i-1]=niz2[m-i]+brljudi[1][m-i-1];
        }
        long long int najmanjizbir1[m];
        long long int najmanjizbir2[m];
        najmanjizbir1[0]=niz1[0]+niz2[0];
        najmanjizbir2[m-1]=niz1[m-1]+niz2[m-1];
        for(int i=1; i<m; i++)
        {
            najmanjizbir1[i]=min(najmanjizbir1[i-1], niz1[i]+niz2[i]);
            najmanjizbir2[m-i-1]=min(najmanjizbir2[m-i], niz1[m-i-1]+niz2[m-i-1]);
        }
        cin>>q;
        for(int i=0; i<q; i++)
        {
            cin>>bloki>>blokj;
            if(bloki==1)
            {
                cout<<najmanjizbir1[blokj-2]<<"\n";
            }
            else cout<<najmanjizbir2[blokj]<<"\n";
        }
    }
    else
    {
        cin>>q;
        for(int i=0; i<q; i++)
            {
                cin>>bloki>>blokj;
                long long int resenje = dp(bloki-1, blokj-1, brljudi);
                cout<<resenje<<"\n";
            }
    }
}