1 #include <cstdio>
2 #include <cstring>
3 #include <cstdlib>
4 #include <vector>
5 #include <iostream>
6 using namespace std;
7
8 typedef long long int LL;
9 const LL INF=10000000000ll;
10 const int maxn=100000*32;
11 struct ACM
12 {
13 struct Node
14 {
15 LL val;
16 int lson,rson;
17 }seg[maxn];
18 int sz;
19 int newnode()
20 {
21 sz++;
22 seg[sz].val=0;
23 seg[sz].rson=-1;
24 seg[sz].lson=-1;
25 return sz;
26 }
27 void init()
28 {
29 sz=-1;
30 }
31 void update(int &root,LL l,LL r,LL val)
32 {
33 if(root==-1) root=newnode();
34 seg[root].val++;
35 if(l==r) return ;
36 LL mid=(l+r)>>1;
37 if(val<=mid) update(seg[root].lson,l,mid,val);
38 else update(seg[root].rson,mid+1,r,val);
39 }
40 LL query(int root,LL l,LL r,LL ql,LL qr)
41 {
42 if(root==-1) return 0;
43 if(l==ql&&r==qr) return seg[root].val;
44 LL mid=(l+r)>>1;
45 if(qr<=mid) return query(seg[root].lson,l,mid,ql,qr);
46 else if(ql>mid) return query(seg[root].rson,mid+1,r,ql,qr);
47 else return query(seg[root].lson,l,mid,ql,mid)+query(seg[root].rson,mid+1,r,mid+1,qr);
48 }
49 /**
50 void debug(int i)
51 {
52 if(i==-1) return ;
53 printf("node=%d val=%lld lson=%d rson=%d
",i,seg[i].val,seg[i].lson,seg[i].rson);
54 debug(seg[i].lson),debug(seg[i].rson);
55 }
56 */
57 }AC;
58
59 int main()
60 {
61 int n,L,R,root=-1;
62 scanf("%d%d%d",&n,&L,&R);
63 LL sum=0,ans=0;
64 AC.init();
65 for(int i=1; i<=n; i++)
66 {
67 int num;
68 scanf("%d",&num);
69 AC.update(root,-INF,INF,sum);
70 sum+=num;
71 ans+=AC.query(root,-INF,INF,sum-R,sum-L);
72 }
73 printf("%lld
",ans);
74 return 0;
75 }