//object D {
object Main {
  import InOut._
  def main(args: Array[String]): Unit = {

    val n = nextInt

    val divisorCount = Array.fill(n + 1)(2)
    divisorCount(1) = 1

    var i = 2
    while (i <= n) {
      var j = 2 * i// * i
      //if (divisorCount(j)) {
        while (j <= n) {
          //if (j == 16) println(if (i == j * j) 1 else 2)
          divisorCount(j) += 1//(if (i == j * j) 1 else 2)
          j += i
        }
//      if (n % i == 0) {
//        divisorCount(n / i) += 1
//      }
      //}
      i += 1
    }
//println(divisorCount.zipWithIndex.mkString(" "))
    var res = 0L
    i = 1
    while (i <= n) {
      res += i.toLong * divisorCount(i)
      i += 1
    }

    out.println(res)

    out.flush()
  }
 
  final object InOut {
    val in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in))
    val out = new java.io.PrintWriter(System.out, false)
    private[this] var tokenizer: java.util.StringTokenizer = _
    def nextToken: String = {
      while (tokenizer == null || !tokenizer.hasMoreTokens)
        tokenizer = new java.util.StringTokenizer(in.readLine)
      tokenizer.nextToken
    }
    def nextInt = Integer.parseInt(nextToken)
    def nextLong = java.lang.Long.parseLong(nextToken)
    def nextBig = BigInt(nextToken)
    def nextInts(n: Int) = Array.fill(n) { nextInt }
    def nextLongs(n: Int) = Array.fill(n) { nextLong }
    def nextBigs(n: Int) = Array.fill(n) { nextBig }
    def nextLine = in.readLine
  }
}
