#include<bits/stdc++.h>
using namespace std;
int n,m,a[1010][1010],t,ant;
int d[5]={0,-1,0,1},b[5]={-1,0,1,0};
struct node{
int aa,bb;
}ab[10005];
int main(){
memset(a,0,sizeof(a));
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)cin>>a[i][j];
}
cin>>t;
while(t--){
int x1,x2,y1,y2;
cin>>x1>>x2>>y1>>y2;
swap(a[x1][x2],a[y1][y2]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int maxx=a[i][j];
bool flag=0;
for(int z=0;z<4;z++){
if(a[i+d[z]][j+b[z]]>=maxx&&(i+d[z])>0&&(j+b[z])>0){
flag=1;
break;
}
}
if(flag==0){
ab[++ant].aa=i;
ab[ant].bb=j;
}
}
}
cout<<ant<<endl;
for(int i=1;i<=ant;i++){
cout<<ab[i].aa<<" "<<ab[i].bb<<endl;
}
return 0;
}