N,M = map(int,input().split()); MOD = pow(10,9)+7 for i in range(1,M+1): #reversed(range(1,M+1)): base = (N+1)//i amari = (N+1)%i #baseがi-amari個、base+1がamari個 #print(i,N+1,base,amari) temp = (base-1)*pow(base,i-amari-1,MOD)*pow(base+1,amari,MOD)%MOD ans = max(temp,0) print(ans)