蒙逼,难以落实成代码

maoge有N(2<=N<=1000)块砖,要搭一个塔,要求:如果砖A在砖B上面,那么A不能比B的长度-D(1<=D<=n)要长。问有几种方法,输出 答案 mod 1000000007的值。
注意,塔的高度不能为0。
【输入格式】
第一行: N,D 第二行: N个数,表示每块砖的长度,保证为正整数且小于等于10000。
【输出格式】
方案数,输出要mod 1000000007。
【样例输入】
4 1
1 2 3 100
【样例输出】
15
本来想1层,两层,3层之类的,但代码有点写不出来

应该是可以dfs硬爆或者用组合数学写