#include #include #include #include using namespace std; int N,A,B; int T[1000500]; int dp[1000100][2]; priority_queue > one; int zero=-1<<30; int curr_zero=0; int Te; int main(){ cin.sync_with_stdio(false); //freopen("in_big.txt","r",stdin); //freopen("myout.txt","w",stdout); cin>>Te; while(Te--){ while(!one.empty()){ one.pop(); } zero=-1<<30; curr_zero=0; cin>>N>>A>>B; for(int i=1;i<=N;i++){ cin>>T[i]; } T[0]=-1; dp[0][1]=-1<<30; dp[0][0]=0; one.push(make_pair(-1<<30,-1)); for(int i=1;i<=N;i++){ while(curr_zeroA){ zero=max(zero,dp[curr_zero][0]); curr_zero++; } dp[i][1]=max(dp[i-1][1],zero); one.push(make_pair(dp[i][1]-i,T[i])); while(T[i]-one.top().second > B-A){ one.pop(); } dp[i][0]= max(dp[i-1][0],one.top().first + i + 1); } cout<