#include <bits/stdc++.h>
#define int long long
#define MAXIMUM 1000000000000010
using namespace std;

int n,m;
int a[1000010];
bool pos[1000010];
int poss[1000010];

int resip(int i,int j){
    if(i==n-1 && j==m-1) return a[n*m-1];
    int a1=MAXIMUM,a2=MAXIMUM;
    if(i<n-1) a1=resip(i+1,j);
    if(j<m-1) a2=resip(i,j+1);
    poss[i*m+j]=a[i*m+j]+min(a1,a2);
    return a[i*m+j]+min(a1,a2);
}

int resi(int i,int j,int x,int y){
    if(i==n-1 && j==m-1) return a[n*m-1];
    int a1=MAXIMUM,a2=MAXIMUM;
    if(i>x||j>y) return poss[i*m+j];
    if((i+1!=x||j!=y) && i<n-1) a1=resi(i+1,j,x,y);
    if((i!=x||j+1!=y) && j<m-1) a2=resi(i,j+1,x,y);
    return a[i*m+j]+min(a1,a2);
}

signed main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++) cin>>a[i*m+j];
    int q; cin>>q;
    int pom=q;
    int res[500010];
    resip(0,0);
    /*for(int i=0;i<n;i++){
        for(int j=0;j<m;j++) cout<<poss[i*m+j]<<" ";
        cout<<"\n";
    }*/
    while(q>0){
        int x,y; cin>>x>>y;
        res[q]=resi(0,0,x-1,y-1);
        q--;
    }
    q=pom;
    for(int i=q;i>0;i--) cout<<res[i]<<"\n";
    return 0;
}