#include #include #include #include #include using namespace std; const int maxn=100002; const int oo=1000000000; const int mod=9901; int c[maxn],n,d,b[maxn],a[maxn]; void add(int x,int val) { while(x<=maxn) { c[x]+=val; c[x]%=mod; x+=(x&-x); } } int sum(int x) { int s=0; while(x>0) { s+=c[x]; s%=mod; x-=(x&-x); } return s; } int main() { int i,id,up,down,val,ans; while(~scanf("%d%d",&n,&d)) { mapflag; map::iterator it; flag[0]=0; memset(c,0,sizeof(c)); for(i=0; isecond; it=flag.upper_bound(a[i]+d); up=it->second-1; it=flag.lower_bound(a[i]-d); down=it->second; val=sum(up)-sum(down-1)+1; val=(val%mod+mod)%mod; add(id,val); } ans=sum(cnt); ans=((ans-n)%mod+mod)%mod; printf("%d\n",ans); } return 0; }