public class Test {
public static final int f = 1000000007;
public static int num(int n){
if(n==1)
return 1;
return (num(n-1)+4n-3+sub1(n)+sub2(n))%f;
}
private static int sub1(int n){
int r=0;
for(int i=2;i<=n/2;i++){
if(n%2==0){
int m = (int)Math.pow(n, 1.0/i) - 1;
if(m>0)
r += 2
m;
}
}
return r;
}
private static int sub2(int n){
int r=0;
int le = (int)(Math.log(n)/Math.log(2));
for(int i=2;i<le;i++){
double d = Math.pow(n, 1.0/i);
if(d-(int)d<0.000000001){
int m = (n-1)/i;
r += 2*m;
}
}
return r;
}
}