/*
**1051 Pop Sequence (25 分)-------------25
**栈
**#1)可以模拟栈,因为输入有序,所以当输入的数a>stack[top]的值时,进行入栈操作,如果栈满,仍大于,出错。
** 2)如果a<stack[top]则出错,相等出栈。
**#2先将输入存在数组中,然后用栈来模拟,依次将1-N入栈,如果等于数组中的数,则出栈,在入栈过程中判断是否栈满,
** 如果满足要求,最后一定栈会变空,
*/
#include<iostream>
using namespace std;
int st[1005];
int main()
{
int M,N,K,i,top,cnt,flag,a;
freopen("test.txt","r",stdin);
scanf("%d %d %d",&M,&N,&K);
st[0]=0;
while(K--){
top=0;cnt=0;flag=0;
for(i=0;i<N;++i){
scanf("%d",&a);
if(flag)continue; //已经出错,只需读入数据即可。
if(a<st[top])flag=1; //输出了一个不是栈顶的元素
else if(a==st[top]){--top;} //出栈
else{
while(top<M+1&&st[top]<a){st[++top]=++cnt;} //入栈
if(top==M+1)flag=1; //栈满
--top; //出栈
}
}
if(flag)printf("NO\n");
else printf("YES\n");
}
return 0;
}
//#2
#include<stack>
bool judge(int arr[],int N,int M)
{
stack<int>st;
int i,index=0;
for(i=1;i<=N;++i){
st.push(i);
if(st.size()>M)return false;
if(st.top()==arr[index]){st.pop();++index;}
}
if(st.empty())return false;
else return true;
}