#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <string>
#include <cstring>
#include <ctime>
#include <set>
#include <list>
#include <sstream>
#include <iomanip>
#include <map>
#include <stack>
#include <unordered_map>
#include <queue>
#include <deque>
#include <chrono>
#include <sstream>
#include <ostream>
#include <assert.h>
#include <cstdint>
#include <climits>
#define ll long long
#define sync ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define PI 3.14159265358979323846 
#define all(c) (c).begin(), (c).end()
#define min_heap_pq priority_queue<int,vector<int>,greater<int>>
using namespace std;

int n, m;
vector<vector<ll>> a, dp;
const ll inf = 1e18;

ll check(int i, int j) {
    if (i == n or j == m) return inf;
    if (dp[i][j] != -1) return dp[i][j];
    dp[i][j] = 0;

    dp[i][j] += a[i][j] + min(check(i + 1, j), check(i, j + 1));

    return dp[i][j];
}

// brute force
void solve() {
    cin >> n >> m;
    a = vector<vector<ll>>(n, vector<ll>(m));
    for (vector<ll>& v : a) {
        for (ll& i : v) cin >> i;
    }
    int q;
    cin >> q;
    while (q--) {
        int x, y;
        cin >> x >> y;
        x--, y--;
        ll t = a[x][y];
        a[x][y] = inf;
        dp = vector<vector<ll>>(n, vector<ll>(m, -1));
        dp[n - 1][m - 1] = a[n - 1][m - 1];
        cout << check(0, 0) << "\n";
        a[x][y] = t;
    }
}


int main() {
    sync;
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
}