#include # include #include using namespace std;// 判断是否为山峰bool isPeak(const vector>& land, int i, int j, int n, int m) { int val = land[i][j]; int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; for (int k = 0; k < 4; k++) { int ni = i + dirs[k][0]; int nj = j + dirs[k][1]; if (ni >= 0 && ni < n && nj >= 0 && nj < m && land[ni][nj] >= val) { return false; } } return true;}int main() { int n, m, T; cin >> n >> m; vector> land(n, vector(m)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> land[i][j]; } } cin >> T; for (int t = 0; t < T; t++) { int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; swap(land[x1 - 1][y1 - 1], land[x2 - 1][y2 - 1]); } vector> peaks; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (isPeak(land, i, j, n, m)) { peaks.push_back({i + 1, j + 1}); } } } sort(peaks.begin(), peaks.end()); cout << peaks.size() << endl; for (const auto& peak : peaks) { cout << peak.first << " " << peak.second << endl; } return 0;}