/*
一道二合一的题目。
对于前50%,a[i][j][k]表示矩阵的前i,j格大于k的数的个数,b[i][j][k]表示矩阵的前i,j格大于k的数的总和,预处理出来之后,二分答案。
对于后50%,很明显可以二分答案k,然后转成判断x~y中前k大的总和是否大于h,然后主席树维护一下。
*/
#include<cstdio>
#include<iostream>
#define N 210
#define M 500010
using namespace std;
int a[N][N][1010],b[N][N][1010],n,m,Q;
int root[M],Sum[M],cnt;
struct node{int size,lc,rc,sum;}t[M*20];
void work1(){
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
int x;scanf("%d",&x);
for(int k=1;k<=1000;k++){
a[i][j][k]=a[i-1][j][k]+a[i][j-1][k]-a[i-1][j-1][k];
b[i][j][k]=b[i-1][j][k]+b[i][j-1][k]-b[i-1][j-1][k];
if(x>=k) a[i][j][k]++,b[i][j][k]+=x;
}
}
int x1,y1,x2,y2,h;
while(Q--){
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&h);
int l=1,r=1000,ans=1001;
while(l<=r){
int mid=l+r>>1;
if(b[x2][y2][mid]-b[x1-1][y2][mid]-b[x2][y1-1][mid]+b[x1-1][y1-1][mid]>=h)
l=mid+1,ans=mid;
else r=mid-1;
}
if(ans==1001) printf("Poor QLW\n");
else {
int sum1=b[x1-1][y1-1][ans]+b[x2][y2][ans]-b[x2][y1-1][ans]-b[x1-1][y2][ans]-h;
int sum2=a[x1-1][y1-1][ans]+a[x2][y2][ans]-a[x2][y1-1][ans]-a[x1-1][y2][ans];
printf("%d\n",sum2-sum1/ans);
}
}
}
void add(int last,int &k,int l,int r,int x){
k=++cnt;
t[k].size=t[last].size+1;
t[k].sum=t[last].sum+x;
t[k].lc=t[last].lc;
t[k].rc=t[last].rc;
if(l==r) return;
int mid=l+r>>1;
if(x<=mid) add(t[last].lc,t[k].lc,l,mid,x);
else add(t[last].rc,t[k].rc,mid+1,r,x);
}
int query(int x,int y,int l,int r,int k){
if(l==r) return (t[y].sum-t[x].sum)/(t[y].size-t[x].size)*k;
int mid=l+r>>1,tot=t[t[y].lc].size-t[t[x].lc].size;
if(k<=tot) return query(t[x].lc,t[y].lc,l,mid,k);
else return t[t[y].lc].sum-t[t[x].lc].sum+query(t[x].rc,t[y].rc,mid+1,r,k-tot);
}
void work2(){
for(int i=1;i<=m;i++){
int x;scanf("%d",&x);
add(root[i-1],root[i],1,1000,x);
Sum[i]=Sum[i-1]+x;
}
int x1,y1,x2,y2,h;
while(Q--){
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&h);
if(Sum[y2]-Sum[y1-1]<h) {printf("Poor QLW\n");continue;}
int l=1,r=y2-y1+1,ans=r;
while(l<=r){
int mid=l+r>>1,k=y2-y1+2-mid;
if(Sum[y2]-Sum[y1-1]-query(root[y1-1],root[y2],1,1000,k)>=h) r=mid-1,ans=mid-1;
else l=mid+1;
}
printf("%d\n",ans);
}
}
int main(){
scanf("%d%d%d",&n,&m,&Q);
if(n<=200&&m<=200) work1();
else work2();
return 0;
}