import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.NoSuchElementException; public class Main{ public static void main(String[] args) { new Main().run(); } final long MOD=(long)1e9+7; long pow(long a,long n) { return n!=0?pow(a*a%MOD,n/2)*(n%2==1?a:1)%MOD:1; } long inv(long a) { return pow(a,MOD-2); } int MAX=(int)1e5; long[] fac=new long[MAX]; long[] ifac=new long[MAX]; { fac[0]=ifac[0]=1; for (int i=1;i<1e5;++i) { fac[i]=i*fac[i-1]%MOD; } ifac[MAX-1]=inv(fac[MAX-1]); for (int i=MAX-2;i>=1;--i) { ifac[i]=(i+1)*ifac[i+1]%MOD; } } long comb(int n,int k) { return fac[n]*ifac[k]%MOD*ifac[n-k]%MOD; } long ADD(long a,long b) { return a+b>=MOD?a+b-MOD:a+b; } void run() { FastScanner sc=new FastScanner(); long N=sc.nextLong()%MOD; int K=sc.nextInt(); long[] B=new long[K+2]; B[0]=1; for (int i=1;i Integer.MAX_VALUE) throw new NumberFormatException(); return (int) nl; } public double nextDouble() { return Double.parseDouble(next());} }