#define _CRT_SECURE_NO_WARNINGS
#include<string>
#include<string.h>
#include<vector>
#include<map>
#include<stack>
#include<iostream>
#include<sstream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main()
{
int N, M,K;
cin >> M >> N >> K;
for (int inum = 0; inum < K; inum++)
{
stack <int> s;
int *num = new int[N];
for (int ii = 0; ii < N; ii++)
{
scanf("%d",&num[ii]);
}
int i = 1, j = 0;
bool bYes = true;
for (; j<N;j++)
{
if (s.size()>0&&s.top() == num[j])
{
s.pop();
continue;
}
if (num[j] >= i)
{
for (; i <= num[j]; i++)
s.push(i);
if (s.size()>M)
{
cout <<"NO" << endl;
bYes = false;
break;
}
s.pop();
}
else
{
cout << "NO" << endl;
bYes = false;
break;
}
}
if (bYes)
cout << "YES" << endl;
}
return 0;
}
#include<string>
#include<string.h>
#include<vector>
#include<map>
#include<stack>
#include<iostream>
#include<sstream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main()
{
int N, M,K;
cin >> M >> N >> K;
for (int inum = 0; inum < K; inum++)
{
stack <int> s;
int *num = new int[N];
for (int ii = 0; ii < N; ii++)
{
scanf("%d",&num[ii]);
}
int i = 1, j = 0;
bool bYes = true;
for (; j<N;j++)
{
if (s.size()>0&&s.top() == num[j])
{
s.pop();
continue;
}
if (num[j] >= i)
{
for (; i <= num[j]; i++)
s.push(i);
if (s.size()>M)
{
cout <<"NO" << endl;
bYes = false;
break;
}
s.pop();
}
else
{
cout << "NO" << endl;
bYes = false;
break;
}
}
if (bYes)
cout << "YES" << endl;
}
return 0;
}