def Inverse_Proportion(N): retu=[] for i in range(1,N+1): if i==N or N//i>N//(i+1): retu.append(((i,i+1),N//i)) else: for j in range(N//i,0,-1): retu.append(((N//(j+1)+1,N//j+1),j)) break return retu N=int(input()) mod=10**9+7 def solve(N): return sum(n*(r-l) for (l,r),n in Inverse_Proportion(N))%mod IP=Inverse_Proportion(N) ans=solve(N)*(N+3)-sum(n*n*(r-l) for (l,r),n in IP)-N*N-N def cnt(x,y,z): if x==z: return 1 if x==y: return 3 if y==z: return 3 return 6 for x in range(1,N+1): if x*x*x>N: break for y in range(x,N+1): if x*y*y>N: break ans-=cnt(x,y,y) ans-=cnt(x,y,y+1)*(N//x//y+1-y-1) ans%=mod print(ans)