#include <iostream>

using namespace std;

int main() {
	long long int n, m, q;
	cin >> n >> m;
	long long int map[n][m], d[n][m];
	bool p[n][m];
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < m; j++) {
			cin >> map[i][j];
		}
	}
	cin >> q;
	long long int s[q][2];
	for(int i = 0; i < q; i++) {
		for(int j = 0; j < 2; j++) {
			cin >> s[i][j];
			s[i][j]--;
		}
	}
	for(int i = 0; i < q; i++) {
		for(int k = 0; k < n; k++) {
			for(int j = 0; j < m; j++) {
				d[k][j] = LONG_LONG_MAX;
			}
		}
		d[0][0] = map[0][0];
		for(int k = 0; k < n; k++) {
			for(int j = 0; j < m; j++) {
				p[k][j] = false;
			}
		}
		int ww = s[i][0], wq = s[i][1];
		p[ww][wq] = true;
		for(int j = 0; j < n; j++) {
			for(int k = 0; k < m; k++) {
				long long int min = LONG_LONG_MAX, minn = 0, minm = 0;
				bool w = true;
				for(int l = 0; l < n; l++) {
					for(int l1 = 0; l1 < m; l1++) {
						if(min > d[l][l1] && p[l][l1] == false) {
							min = d[l][l1];
							minn = l;
							minm = l1;
						}
					}
				}
				p[minn][minm] = true;
				if(s[i][0] == minn && s[i][1] == minm+1) {
					w = false;
				}
				if(w && minm+1 < m) {
					if(map[minn][minm+1] + d[minn][minm] < d[minn][minm+1] && p[minn][minm+1] == false) {
						d[minn][minm+1] = map[minn][minm+1] + d[minn][minm];
					}
				}
				w = true;
				if(s[i][0] == minn+1 && s[i][1] == minm) {
					w = false;
				}
				if(w && minn+1 < n) {
					if(map[minn+1][minm] + d[minn][minm] < d[minn+1][minm] && p[minn+1][minm] == false) {
						d[minn+1][minm] = map[minn+1][minm] + d[minn][minm];
					}
				}
			}
		}
		cout << d[n-1][m-1] << endl;
	}

	return 0;
}