#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
void * wmem;
char memarr[ 96000000 ] ;
template < class S, class T> inline S max_L( S a,T b) {
return a>= b? a: b;
}
template < class T> inline void walloc1d( T ** arr, int x, void ** mem = & wmem) {
static int skip[ 16 ] = { 0 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 } ;
( * mem) = ( void * ) ( ( ( char * ) ( * mem) ) + skip[ ( ( unsigned long long ) ( * mem) ) & 15 ] ) ;
( * arr) = ( T* ) ( * mem) ;
( * mem) = ( ( * arr) + x) ;
}
template < class T1> void sortA_L( int N, T1 a[ ] , void * mem = wmem) {
sort( a, a+ N) ;
}
template < class T1, class T2> void sortA_L( int N, T1 a[ ] , T2 b[ ] , void * mem = wmem) {
int i;
pair< T1, T2> * arr;
walloc1d( & arr, N, & mem) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr[ i] .first = a[ i] ;
arr[ i] .second = b[ i] ;
}
sort( arr, arr+ N) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
a[ i] = arr[ i] .first ;
b[ i] = arr[ i] .second ;
}
}
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
wmem = memarr;
return 0 ;
}
#undef main
int dp[ 1000 ] ;
int val[ 1000 ] ;
int ind[ 1000 ] ;
class Solution{
public :
int maxJumps( vector< int > & A, int D) {
int Q5VJL1cS, i;
dummy_main( ) ;
int k;
int N = A.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
val[ i] = A[ i] ;
ind[ i] = i;
}
sortA_L( N, val, ind) ;
for ( Q5VJL1cS= ( 0 ) ; Q5VJL1cS< ( N) ; Q5VJL1cS++ ) {
int j;
auto & i = ind[ Q5VJL1cS] ;
dp[ i] = 1 ;
for ( j= ( 0 ) ; j< ( D) ; j++ ) {
k = i - j - 1 ;
if ( k < 0 || A[ k] >= A[ i] ) {
break ;
}
chmax( dp[ i] , dp[ k] + 1 ) ;
}
for ( j= ( 0 ) ; j< ( D) ; j++ ) {
k = i + j + 1 ;
if ( k >= N || A[ k] >= A[ i] ) {
break ;
}
chmax( dp[ i] , dp[ k] + 1 ) ;
}
}
{
int t_ynMSdg;
int KrdatlYV;
if ( N== 0 ) {
KrdatlYV = 0 ;
}
else {
KrdatlYV = dp[ 0 ] ;
for ( t_ynMSdg= ( 1 ) ; t_ynMSdg< ( N) ; t_ynMSdg++ ) {
KrdatlYV = max_L( KrdatlYV, dp[ t_ynMSdg] ) ;
}
}
return KrdatlYV;
}
}
}
;
// cLay varsion 20200214-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int dp[1000], val[1000], ind[1000];
//
// class Solution {
// public:
// int maxJumps(vector<int>& A, int D) {
// dummy_main();
// int k, N = A.size();
//
// rep(i,N) val[i] = A[i], ind[i] = i;
// sortA(N, val, ind);
//
// rep[ind](i,N){
// dp[i] = 1;
// rep(j,D){
// k = i - j - 1;
// if(k < 0 || A[k] >= A[i]) break;
// dp[i] >?= dp[k] + 1;
// }
// rep(j,D){
// k = i + j + 1;
// if(k >= N || A[k] >= A[i]) break;
// dp[i] >?= dp[k] + 1;
// }
// }
//
// return max(dp(N));
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgKndtZW07CmNoYXIgbWVtYXJyWzk2MDAwMDAwXTsKdGVtcGxhdGU8Y2xhc3MgUywgY2xhc3MgVD4gaW5saW5lIFMgbWF4X0woUyBhLFQgYil7CiAgcmV0dXJuIGE+PWI/YTpiOwp9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHdhbGxvYzFkKFQgKiphcnIsIGludCB4LCB2b2lkICoqbWVtID0gJndtZW0pewogIHN0YXRpYyBpbnQgc2tpcFsxNl0gPSB7MCwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMX07CiAgKCptZW0pID0gKHZvaWQqKSggKChjaGFyKikoKm1lbSkpICsgc2tpcFsoKHVuc2lnbmVkIGxvbmcgbG9uZykoKm1lbSkpICYgMTVdICk7CiAgKCphcnIpPShUKikoKm1lbSk7CiAgKCptZW0pPSgoKmFycikreCk7Cn0KdGVtcGxhdGU8Y2xhc3MgVDE+IHZvaWQgc29ydEFfTChpbnQgTiwgVDEgYVtdLCB2b2lkICptZW0gPSB3bWVtKXsKICBzb3J0KGEsIGErTik7Cn0KdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiB2b2lkIHNvcnRBX0woaW50IE4sIFQxIGFbXSwgVDIgYltdLCB2b2lkICptZW0gPSB3bWVtKXsKICBpbnQgaTsKICBwYWlyPFQxLCBUMj4gKmFycjsKICB3YWxsb2MxZCgmYXJyLCBOLCAmbWVtKTsKICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgIGFycltpXS5maXJzdCA9IGFbaV07CiAgICBhcnJbaV0uc2Vjb25kID0gYltpXTsKICB9CiAgc29ydChhcnIsIGFycitOKTsKICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgIGFbaV0gPSBhcnJbaV0uZmlyc3Q7CiAgICBiW2ldID0gYXJyW2ldLnNlY29uZDsKICB9Cn0KdGVtcGxhdGU8Y2xhc3MgUywgY2xhc3MgVD4gaW5saW5lIFMgY2htYXgoUyAmYSwgVCBiKXsKICBpZihhPGIpewogICAgYT1iOwogIH0KICByZXR1cm4gYTsKfQojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHdtZW0gPSBtZW1hcnI7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IGRwWzEwMDBdOwppbnQgdmFsWzEwMDBdOwppbnQgaW5kWzEwMDBdOwpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IG1heEp1bXBzKHZlY3RvcjxpbnQ+JiBBLCBpbnQgRCl7CiAgICBpbnQgUTVWSkwxY1MsIGk7CiAgICBkdW1teV9tYWluKCk7CiAgICBpbnQgazsKICAgIGludCBOID0gQS5zaXplKCk7CiAgICBmb3IoaT0oMCk7aTwoTik7aSsrKXsKICAgICAgdmFsW2ldID0gQVtpXTsKICAgICAgaW5kW2ldID0gaTsKICAgIH0KICAgIHNvcnRBX0woTiwgdmFsLCBpbmQpOwogICAgZm9yKFE1VkpMMWNTPSgwKTtRNVZKTDFjUzwoTik7UTVWSkwxY1MrKyl7CiAgICAgIGludCBqOwogICAgICBhdXRvICZpID0gaW5kW1E1VkpMMWNTXTsKICAgICAgZHBbaV0gPSAxOwogICAgICBmb3Ioaj0oMCk7ajwoRCk7aisrKXsKICAgICAgICBrID0gaSAtIGogLSAxOwogICAgICAgIGlmKGsgPCAwIHx8IEFba10gPj0gQVtpXSl7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY2htYXgoZHBbaV0sIGRwW2tdICsgMSk7CiAgICAgIH0KICAgICAgZm9yKGo9KDApO2o8KEQpO2orKyl7CiAgICAgICAgayA9IGkgKyBqICsgMTsKICAgICAgICBpZihrID49IE4gfHwgQVtrXSA+PSBBW2ldKXsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjaG1heChkcFtpXSwgZHBba10gKyAxKTsKICAgICAgfQogICAgfQogICAgewogICAgICBpbnQgdF95bk1TZGc7CiAgICAgIGludCBLcmRhdGxZVjsKICAgICAgaWYoTj09MCl7CiAgICAgICAgS3JkYXRsWVYgPSAwOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgS3JkYXRsWVYgPSBkcFswXTsKICAgICAgICBmb3IodF95bk1TZGc9KDEpO3RfeW5NU2RnPChOKTt0X3luTVNkZysrKXsKICAgICAgICAgIEtyZGF0bFlWID0gbWF4X0woS3JkYXRsWVYsIGRwW3RfeW5NU2RnXSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBLcmRhdGxZVjsKICAgIH0KICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAyMDAyMTQtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBpbnQgZHBbMTAwMF0sIHZhbFsxMDAwXSwgaW5kWzEwMDBdOwovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IG1heEp1bXBzKHZlY3RvcjxpbnQ+JiBBLCBpbnQgRCkgewovLyAgICAgZHVtbXlfbWFpbigpOwovLyAgICAgaW50IGssIE4gPSBBLnNpemUoKTsKLy8gCi8vICAgICByZXAoaSxOKSB2YWxbaV0gPSBBW2ldLCBpbmRbaV0gPSBpOwovLyAgICAgc29ydEEoTiwgdmFsLCBpbmQpOwovLyAKLy8gICAgIHJlcFtpbmRdKGksTil7Ci8vICAgICAgIGRwW2ldID0gMTsKLy8gICAgICAgcmVwKGosRCl7Ci8vICAgICAgICAgayA9IGkgLSBqIC0gMTsKLy8gICAgICAgICBpZihrIDwgMCB8fCBBW2tdID49IEFbaV0pIGJyZWFrOwovLyAgICAgICAgIGRwW2ldID4/PSBkcFtrXSArIDE7Ci8vICAgICAgIH0KLy8gICAgICAgcmVwKGosRCl7Ci8vICAgICAgICAgayA9IGkgKyBqICsgMTsKLy8gICAgICAgICBpZihrID49IE4gfHwgQVtrXSA+PSBBW2ldKSBicmVhazsKLy8gICAgICAgICBkcFtpXSA+Pz0gZHBba10gKyAxOwovLyAgICAgICB9Ci8vICAgICB9Ci8vIAovLyAgICAgcmV0dXJuIG1heChkcChOKSk7Ci8vICAgfQovLyB9Owo=