#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int qs11(vector<int>arr,int k1,int k2){
int n=arr.size();
vector<int>suffix(n,0);
vector<int>s(n,0);
for(int k=0;k<n;k++){
int res=-1;
int low=k+1;
int high=n-1;
int req=k2-arr[k];
while(low<=high){
int mid=(low+high)/2;
if(arr[mid]>req){
res=mid;
high=mid-1;
}
else {
low=mid+1;
}
}
if(res!=-1){
s[k]=n-res;
}
}
suffix[n-1]=s[n-1];
for(int i=n-2;i>=0;i--){
suffix[i]=s[i]+suffix[i+1];
}
//Main logic of the code
int count=0;
for(int i=1;i<n-2;i++){
int c1=0;
int low=0;
int high=i-1;
int req=k1-arr[i];
int r=-1;
while(low<=high){
int mid=(low+high)/2;
if(arr[mid]>req){
r=mid;
high=mid-1;
}
else{
low=mid+1;
}
}
if(r!=-1){
c1=i-r;
}
int c2=0;
c2=suffix[i+1];
count+=c1*c2;
}
return count;
}
int main(){
int n;
cin>>n;
vector<int>arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
int k1,k2;
cin>>k1;
cin>>k2;
int result=qs11(arr,k1,k2);
cout<<"The number of quadruplets from the array which satisfies the given condition: "<<result<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHFzMTEodmVjdG9yPGludD5hcnIsaW50IGsxLGludCBrMil7CiAgICBpbnQgbj1hcnIuc2l6ZSgpOwogICAgdmVjdG9yPGludD5zdWZmaXgobiwwKTsKICAgIHZlY3RvcjxpbnQ+cyhuLDApOwogICAgCiAgICBmb3IoaW50IGs9MDtrPG47aysrKXsKICAgICAgICBpbnQgcmVzPS0xOwogICAgICAgIGludCBsb3c9aysxOwogICAgICAgIGludCBoaWdoPW4tMTsKICAgICAgICBpbnQgcmVxPWsyLWFycltrXTsKICAgICAgICB3aGlsZShsb3c8PWhpZ2gpewogICAgICAgICAgICBpbnQgbWlkPShsb3craGlnaCkvMjsKICAgICAgICAgICAgaWYoYXJyW21pZF0+cmVxKXsKICAgICAgICAgICAgICAgIHJlcz1taWQ7CiAgICAgICAgICAgICAgICBoaWdoPW1pZC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbG93PW1pZCsxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZihyZXMhPS0xKXsKICAgICAgICAgICAgc1trXT1uLXJlczsKICAgICAgICB9CiAgICB9CgogICAgc3VmZml4W24tMV09c1tuLTFdOwogICAgZm9yKGludCBpPW4tMjtpPj0wO2ktLSl7CiAgICAgICAgc3VmZml4W2ldPXNbaV0rc3VmZml4W2krMV07CiAgICB9CgogICAgLy9NYWluIGxvZ2ljIG9mIHRoZSBjb2RlCiAgICBpbnQgY291bnQ9MDsKCiAgICBmb3IoaW50IGk9MTtpPG4tMjtpKyspewogICAgICAgIGludCBjMT0wOwogICAgICAgIGludCBsb3c9MDsKICAgICAgICBpbnQgaGlnaD1pLTE7CiAgICAgICAgaW50IHJlcT1rMS1hcnJbaV07CiAgICAgICAgaW50IHI9LTE7CiAgICAgICAgd2hpbGUobG93PD1oaWdoKXsKICAgICAgICAgICAgaW50IG1pZD0obG93K2hpZ2gpLzI7CiAgICAgICAgICAgIGlmKGFyclttaWRdPnJlcSl7CiAgICAgICAgICAgICAgICByPW1pZDsKICAgICAgICAgICAgICAgIGhpZ2g9bWlkLTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGxvdz1taWQrMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihyIT0tMSl7CiAgICAgICAgICAgIGMxPWktcjsKICAgICAgICB9CgogICAgICAgIGludCBjMj0wOwogICAgICAgIGMyPXN1ZmZpeFtpKzFdOwoKICAgICAgICBjb3VudCs9YzEqYzI7CiAgICB9CgogICAgcmV0dXJuIGNvdW50Owp9CgppbnQgbWFpbigpewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICB2ZWN0b3I8aW50PmFycihuKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgfQogICAgaW50IGsxLGsyOwogICAgY2luPj5rMTsKICAgIGNpbj4+azI7CgogICAgaW50IHJlc3VsdD1xczExKGFycixrMSxrMik7CiAgICBjb3V0PDwiVGhlIG51bWJlciBvZiBxdWFkcnVwbGV0cyBmcm9tIHRoZSBhcnJheSB3aGljaCBzYXRpc2ZpZXMgdGhlIGdpdmVuIGNvbmRpdGlvbjogIjw8cmVzdWx0PDxlbmRsOwogICAgcmV0dXJuIDA7CiAgICAKfQ==