#include #define For(i,a,b) for(int i=a;i<=b;++i) #define min(a,b) ((a)<(b)?(a):(b)) template inline void read(T& t) { t=0; bool f=false; char ch; while(ch=getchar(),!((ch>='0'&&ch<='9')||ch=='-')); if(ch=='-') f=true,ch=getchar(); t=ch-'0'; while(ch=getchar(),ch>='0'&&ch<='9') t=t*10+ch-'0'; if(f) t=-t; } template inline void read(T& t,Args&... args) { read(t); read(args...); } const int maxab=1005; const int maxn=105; int mp[maxab][maxab]; int maxrow[maxab][maxab],maxsq[maxab][maxab]; int minrow[maxab][maxab],minsq[maxab][maxab]; int que[maxab],head,tail; int a,b,n; inline void InQueMax(int idx,int step,int *v) { while(head=step) head++; while(head=v[que[tail-1]]) tail--; que[tail++]=idx; } inline void InQueMin(int idx,int step,int *v) { while(head=step) head++; while(head