#include #include #include #include using namespace std; int N; long L,R; int ans=1; vectorf(vector&A) { sort(A.begin(),A.end()); vectorl(A.size()); for(int i=0;i=0;j--) { long v=A[i]*A[j]; if(L<=v&&v<=R) { ans=max(ans,2); if(l[i]==j+1) { long vv=A[j]*A[j+1]; if(L<=vv&&vv<=R) { l[i]=j; ans=max(ans,i-j+1); } } } } } return l; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>L>>R; vectorpos,neg; int zero=0; for(int i=0;i>A; if(A==0)zero++; else if(A>0)pos.push_back(A); else neg.push_back(-A); } vectorpl=f(pos),nl=f(neg); for(long p:pos)for(long n:neg) { long v=p*-n; if(L<=v&&v<=R)ans=max(ans,2); } if(R>=1&&L<=-1) { vectorszp(pos.size()),szn(neg.size()); for(int i=0;i0)szp[i]=szp[i-1]; szp[i]=max(szp[i],i-pl[i]+1); } for(int i=0;i0)szn[i]=szn[i-1]; szn[i]=max(szn[i],i-nl[i]+1); } for(int i=0;i