小红种树(二)
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红种了n个树,第i棵树第一天的高度是a_i,小红可以设定每天每棵树增长的高度(但对于一棵树而言,其每天生长的速度必须相同)。现在小红希望最终在达到每棵树的高度相同,且这个高度不能超过m,请你告诉小红有多少种不同的生长高度设定方案。
注:每天每棵树生长的高度必须是整数!

输入描述:

第一行输入两个正整数n,m,代表树的数量和高度的限制。
第二行输入n个正整数a_i,代表每棵树初始的高度。
保证初始高度不全相同。
2\leq n \leq 10^5
1\leq a_i\leq m\leq 10^6

输出描述:

输出一个整数,代表生长高度设定的方案数。
示例1

输入

复制
4 10
1 3 5 7

输出

复制
6

说明

第一个方案,设置每棵树的生长高度为:[6,4,2,0],第 2 天所有树的高度都变成 7。
第二个方案,设置每棵树的生长高度为:[7,5,3,1],第 2 天所有树的高度都变成 8。
第三个方案,设置每棵树的生长高度为:[8,6,4,2],第 2 天所有树的高度都变成 9。
第四个方案,设置每棵树的生长高度为:[9,7,5,3],第 2 天所有树的高度都变成 10。
第五个方案,设置每棵树的生长高度为:[4,3,2,1],第 3 天所有树的高度都变成 9。
第六个方案,设置每棵树的生长高度为:[3,2,1,0],第 3 天所有树的高度都变成 7。