import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer in = new StringTokenizer(br.readLine());
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
long n = Long.parseLong(in.nextToken());
long res = 0;
long i = 1;
while (i <= n) {
long v = n / i; // 当前块的取值
long j = n / v; // 当前块的右边界
res += v * (j - i + 1); // 计算当前块的贡献
i = j + 1; // 跳到下一个块的起点
}
out.println(res);
out.flush();
out.close();
br.close();
}
}