code:
#include<bits/stdc++.h>
using namespace std;
int t[1000001];
int dp[1000001];
inline void read(int &a){
a = 0;
register char c = getchar();
while(c < '0' || c > '9'){
c = getchar();
}
while(c >= '0' && c <= '9'){
a *= 10;
a += c - '0';
c = getchar();
}
}
deque<int> Q;
int main(){
int n;
read(n);
for(int i(1);i <= n;++i)read(t[i]);
int q;
read(q);
register int p;
while(q--){
read(p);
Q.clear();
memset(dp,0,sizeof(dp));
for(int i = 1;i < n;++i){
if(!Q.empty() && i - Q.front() >= p){
Q.pop_front();
}
while(!Q.empty() && (dp[Q.back()] > dp[i] || (dp[Q.back()] == dp[i] && Q.back() >= i))){
Q.pop_back();
}
Q.push_back(i);
//printf("%d\n",v[Q.front()]);
dp[i + 1] = dp[Q.front()] + (t[Q.front()] <= t[i + 1]);
}
//cout<<Q.front()<<":"<<t[Q.front()]<<","<<i<<":"<<t[i]<<endl;
//for(int i = 1;i < n;i++){
// cout<<dp[i]<<" ";
//}
cout<<dp[n]<<endl;
}
return 0;
}