//  [go]
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	counts := map[int]int64{}
	counts[0] = 0
	counts[100000] = 60838190672
	counts[200000] = 257212470774
	counts[300000] = 596981215450
	counts[400000] = 1084296609104
	counts[500000] = 1722125036282
	counts[600000] = 2512661322551
	counts[700000] = 3457770622390
	counts[800000] = 4558987534475
	counts[900000] = 5817729717828
	counts[1000000] = 7235062807366
	counts[1100000] = 8812039622862
	counts[1200000] = 10549659220862
	counts[1300000] = 12448845177256
	counts[1400000] = 14510332007222
	counts[1500000] = 16734924755096
	counts[1600000] = 19123138141378
	counts[1700000] = 21675833225770
	counts[1800000] = 24393634293809
	counts[1900000] = 27276821356759
	counts[2000000] = 30326413365285
	counts[2100000] = 33542358268005
	counts[2200000] = 36925459066686
	counts[2300000] = 40476248899052
	counts[2400000] = 44194833598353
	counts[2500000] = 48081994935671
	counts[2600000] = 52138123487538
	counts[2700000] = 56363615930452
	counts[2800000] = 60758384185743
	counts[2900000] = 65323182791149
	counts[3000000] = 70058785460280
	counts[3100000] = 74964555109988
	counts[3200000] = 80041527790312
	counts[3300000] = 85290161753688
	counts[3400000] = 90709780843282
	counts[3500000] = 96301520878991
	counts[3600000] = 102065855149715
	counts[3700000] = 108002269398516
	counts[3800000] = 114111807921375
	counts[3900000] = 120394329084663
	counts[4000000] = 126850549017804
	counts[4100000] = 133479467089246
	counts[4200000] = 140282617787827
	counts[4300000] = 147259491582477
	counts[4400000] = 154411235469265
	counts[4500000] = 161737467121483
	counts[4600000] = 169238102781982
	counts[4700000] = 176913242475822
	counts[4800000] = 184764302482181
	counts[4900000] = 192790925674795
	counts[5000000] = 200992441246692
	counts[5100000] = 209370037656611
	counts[5200000] = 217923890158764
	counts[5300000] = 226653316365413
	counts[5400000] = 235560022983960
	counts[5500000] = 244642548171917
	counts[5600000] = 253902107151677
	counts[5700000] = 263338334303632
	counts[5800000] = 272951354222680
	counts[5900000] = 282742772106696
	counts[6000000] = 292711324081941
	counts[6100000] = 302856699362737
	counts[6200000] = 313180253381239
	counts[6300000] = 323682486495499
	counts[6400000] = 334361760892115
	counts[6500000] = 345219904513529
	counts[6600000] = 356256480873339
	counts[6700000] = 367470747430202
	counts[6800000] = 378864539458650
	counts[6900000] = 390437889429971
	counts[7000000] = 402188826344049
	counts[7100000] = 414118956306590
	counts[7200000] = 426229374669116
	counts[7300000] = 438519040875971
	counts[7400000] = 450987322450746
	counts[7500000] = 463635895079489
	counts[7600000] = 476465015795706
	counts[7700000] = 489473701762655
	counts[7800000] = 502662434241804
	counts[7900000] = 516031076204871
	counts[8000000] = 529581632274134
	counts[8100000] = 543311223215741
	counts[8200000] = 557220889209512
	counts[8300000] = 571311613610574
	counts[8400000] = 585584064718129
	counts[8500000] = 600036645526326
	counts[8600000] = 614670553358276
	counts[8700000] = 629486032479553
	counts[8800000] = 644482906053419
	counts[8900000] = 659661281999214
	counts[9000000] = 675021515919670
	counts[9100000] = 690561394962114
	counts[9200000] = 706285619557381
	counts[9300000] = 722190402701363
	counts[9400000] = 738276491989247
	counts[9500000] = 754546104527913
	counts[9600000] = 770997444637057
	counts[9700000] = 787630213195247
	counts[9800000] = 804447590347769
	counts[9900000] = 821446543739323
	counts[10000000] = 838627288460105

	N := nextInt()

	k := N / 100000 * 100000
	s := int64(counts[k])
	for i := k + 1; i <= N; i++ {
		s += int64(i) * count(i)
	}

	fmt.Println(s)
}

func count(n int) int64 {
	c := 0
	for i := 1; i*i <= n; i++ {
		if n%i == 0 {
			c++

			if n/i != i {
				c++
			}
		}
	}
	return int64(c)
}

var stdin = initStdin()

func initStdin() *bufio.Scanner {
	bufsize := 1 * 1024 * 1024 // 1 MB
	var stdin = bufio.NewScanner(os.Stdin)
	stdin.Buffer(make([]byte, bufsize), bufsize)
	stdin.Split(bufio.ScanWords)
	return stdin
}

func nextString() string {
	stdin.Scan()
	return stdin.Text()
}

func nextBytes() []byte {
	stdin.Scan()
	return stdin.Bytes()
}

func nextInt() int {
	i, _ := strconv.Atoi(nextString())
	return i
}

func nextInt64() int64 {
	i, _ := strconv.ParseInt(nextString(), 10, 64)
	return i
}

func debug(args ...interface{}) {
	fmt.Fprintln(os.Stderr, args)
}