import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.util.Arrays; import java.util.Comparator; import java.util.NoSuchElementException; public class Main { public static void main(String[] args) { new Main().run(); } final long MOD=(long)1e9+7; int gcd(int a,int b) { return a==0?b:gcd(b%a,a); } long pow(long a,long n) { return n==0?1:(pow(a*a%MOD,n/2)*(n%2==1?a:1))%MOD; } long inv(long a) { return pow(a,MOD-2); } int MAX=(int)1e6+1; long[] fac=new long[MAX]; long[] ifac=new long[MAX]; int[] cnt_divs=new int[MAX]; { fac[0]=1; for (int i=1;i=1;--i) ifac[i-1]=ifac[i]*i%MOD; for (int i=2;i