def floor_sqrt(n): ng,ok=-1,n+1 while abs(ok-ng)>1: mid=(ng+ok)//2 if mid**2<=n: ng=mid else: ok=mid return ng mod=10**9+7 m,n=map(int,input().split()) c=[0]*m for i in range(1,m): c[i]=c[i-1]+(m-(-i*i)%m) k=floor_sqrt(n*m) a,b=k//m,k%m num=(k*(k+1)*(2*k+1)//6-(c[-1]*a+c[b]))//m print((n*k-num+k//m)%mod)