### BUGGY CODE ###

import sys
import heapq
import re
from itertools import permutations
from bisect import bisect_left, bisect_right
from collections import Counter, deque
from math import factorial, sqrt, gcd
from functools import lru_cache, reduce
INF = 1 << 60
mod = 1000000007
sys.setrecursionlimit(10 ** 7)

# UnionFind
class UnionFind():
    def __init__(self, n):
        self.n = n
        self.parents = [-1] * n

    def find(self, x):
        if self.parents[x] < 0:
            return x
        else:
            self.parents[x] = self.find(self.parents[x])
            return self.parents[x]

    def union(self, x, y):
        x = self.find(x)
        y = self.find(y)

        if x == y:
            return

        if self.parents[x] > self.parents[y]:
            x, y = y, x

        self.parents[x] += self.parents[y]
        self.parents[y] = x

    def size(self, x):
        return -self.parents[self.find(x)]

    def same(self, x, y):
        return self.find(x) == self.find(y)

    def members(self, x):
        root = self.find(x)
        return [i for i in range(self.n) if self.find(i) == root]

    def roots(self):
        return [i for i, x in enumerate(self.parents) if x < 0]

    def group_count(self):
        return len(self.roots())

    def all_group_members(self):
        return {r: self.members(r) for r in self.roots()}

    def __str__(self):
        return '\n'.join('{}: {}'.format(r, self.members(r)) for r in self.roots())

# ダイクストラ
def dijkstra_heap(s, edge, n):
    #始点sから各頂点への最短距離
    d = [10**20] * n
    used = [True] * n #True:未確定
    d[s] = 0
    used[s] = False
    edgelist = []
    for a,b in edge[s]:
        heapq.heappush(edgelist,a*(10**6)+b)
    while len(edgelist):
        minedge = heapq.heappop(edgelist)
        #まだ使われてない頂点の中から最小の距離のものを探す
        if not used[minedge%(10**6)]:
            continue
        v = minedge%(10**6)
        d[v] = minedge//(10**6)
        used[v] = False
        for e in edge[v]:
            if used[e[1]]:
                heapq.heappush(edgelist,(e[0]+d[v])*(10**6)+e[1])
    return d

# 素因数分解
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])

    if temp!=1:
        arr.append([temp, 1])

    if arr==[]:
        arr.append([n, 1])

    return arr

# 2数の最小公倍数
def lcm(x, y):
    return (x * y) // gcd(x, y)

# リストの要素の最小公倍数
def lcm_list(numbers):
    return reduce(lcm, numbers, 1)

# リストの要素の最大公約数
def gcd_list(numbers):
    return reduce(gcd, numbers)

# ここから書き始める
k = int(input())
ans = 0
for i in range(1, k + 1):
    for j in range(1, k + 1):
        for l in range(1, k + 1):
            # print("i =", i)
            # print("j =",j)
            # print("l =", l)
            ans += gcd_list([i, j, l])   
print(ans)

# n = int(input())
# s = input()
# r = []
# g = []
# b = []
# for i in range(n):
#     if s[i] == "R":
#         r.append(i)
#     elif s[i] == "G":
#         g.append(i)
#     else:
#         b.append(i)
# ans = 0
# for i in r:
#     for j in g:
#         for k in b:
#             x, y, z = sorted([i, j, k])
#             if y - x != z - y:
#                 ans += 1
# print(ans)

### FIXED CODE ###

import sys
import heapq
import re
from itertools import permutations
from bisect import bisect_left, bisect_right
from collections import Counter, deque
from math import factorial, sqrt, gcd
from functools import lru_cache, reduce
INF = 1 << 60
mod = 1000000007
sys.setrecursionlimit(10 ** 7)

# UnionFind
class UnionFind():
    def __init__(self, n):
        self.n = n
        self.parents = [-1] * n

    def find(self, x):
        if self.parents[x] < 0:
            return x
        else:
            self.parents[x] = self.find(self.parents[x])
            return self.parents[x]

    def union(self, x, y):
        x = self.find(x)
        y = self.find(y)

        if x == y:
            return

        if self.parents[x] > self.parents[y]:
            x, y = y, x

        self.parents[x] += self.parents[y]
        self.parents[y] = x

    def size(self, x):
        return -self.parents[self.find(x)]

    def same(self, x, y):
        return self.find(x) == self.find(y)

    def members(self, x):
        root = self.find(x)
        return [i for i in range(self.n) if self.find(i) == root]

    def roots(self):
        return [i for i, x in enumerate(self.parents) if x < 0]

    def group_count(self):
        return len(self.roots())

    def all_group_members(self):
        return {r: self.members(r) for r in self.roots()}

    def __str__(self):
        return '\n'.join('{}: {}'.format(r, self.members(r)) for r in self.roots())

# ダイクストラ
def dijkstra_heap(s, edge, n):
    #始点sから各頂点への最短距離
    d = [10**20] * n
    used = [True] * n #True:未確定
    d[s] = 0
    used[s] = False
    edgelist = []
    for a,b in edge[s]:
        heapq.heappush(edgelist,a*(10**6)+b)
    while len(edgelist):
        minedge = heapq.heappop(edgelist)
        #まだ使われてない頂点の中から最小の距離のものを探す
        if not used[minedge%(10**6)]:
            continue
        v = minedge%(10**6)
        d[v] = minedge//(10**6)
        used[v] = False
        for e in edge[v]:
            if used[e[1]]:
                heapq.heappush(edgelist,(e[0]+d[v])*(10**6)+e[1])
    return d

# 素因数分解
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])

    if temp!=1:
        arr.append([temp, 1])

    if arr==[]:
        arr.append([n, 1])

    return arr

# 2数の最小公倍数
def lcm(x, y):
    return (x * y) // gcd(x, y)

# リストの要素の最小公倍数
def lcm_list(numbers):
    return reduce(lcm, numbers, 1)

# リストの要素の最大公約数
def gcd_list(numbers):
    return reduce(gcd, numbers)

# ここから書き始める

# c問題
# k = int(input())
# ans2 =[
#     1, \
#     10, \
#     33, \
#     88, \
#     145, \
#     330, \
#     385, \
#     736, \
#     945, \
#     1450, \
#     1441, \
#     2904, \
#     2353, \
#     3850, \
#     4785, \
#     6016, \
#     5185, \
#     9450, \
#     7201, \
#     12760, \
#     12705, \
#     14410, \
#     12673, \
#     24288, \
#     18625, \
#     23530, \
#     26001, \
#     33880, \
#     25201, \
#     47850, \
#     30721, \
#     48640, \
#     47553, \
#     51850, \
#     55825, \
#     83160, \
#     51985, \
#     72010, \
#     77649, \
#     106720, \
#     70561, \
#     127050, \
#     81313, \
#     126808, \
#     137025, \
#     126730, \
#     105985, \
#     198528, \
#     134113, \
#     186250, \
#     171105, \
#     207064, \
#     151633, \
#     260010, \
#     208945, \
#     283360, \
#     237633, \
#     252010, \
#     208801, \
#     421080, \
#     230641, \
#     307210, \
#     363825, \
#     391168, \
#     341185, \
#     475530, \
#     305185, \
#     456280, \
#     418209, \
#     558250, \
#     362881
#     695520
#     394273
#     519850
#     614625
#     633688
#     554785
#     776490
#     499201
#     872320
#     706401
#     705610
#     578593
#     1118040
#     751825
#     813130
#     831633
#     1060576
#     712801
#     1370250
#     905905
#     1115224
#     1013793
#     1059850
#     1044145
#     1605120
#     921985
#     1341130
#     1361745
#     1639000
#     1040401
#     1711050
#     1103233
#     1731808
#     1842225
#     1516330
#     1236385
#     2288088
#     1306801
#     2089450
#     1715505
#     2316160
#     1455553
#     2376330
#     1837585
#     2217688
#     2223585
#     2088010
#     1996225
#     3521760
#     1931281
#     2306410
#     2328513
#     2703448
#     2340625
#     3638250
#     2064385
#     3137536
#     2683329
#     3411850
#     2265121
#     4184664
#     2772385
#     3051850
#     3770145
#     3816160
#     2589985
#     4182090
#     2704801
#     4912600
#     3497505
#     3628810
#     3390673
#     5685120
#     3654145
#     3942730
#     4425729
#     4574680
#     3330001
#     6146250
#     3465601
#     5299936
#     4899825
#     5547850
#     4454545
#     6833112
#     3894385
#     4992010
#     5003889
#     7052800
#     4879105
#     7064010
#     4357153
#     6209368
#     6895185
#     5785930
#     4685185
#     9350880
#     5195905
#     7518250
#     6804945
#     7155544
#     5207473
#     8316330
#     7170625
#     8669056
#     6890433
#     7128010
# ]
# 1 1 1 2
# 1 1 2 2
# 1 2 1 2
# 1 2 2 2
# 2 1 1 2
# 2 1 2 2
# 2 2 1 2
# 2 2 2 2
# ans = [0] * 200
# total = 0
# for k in range(1, 201):
#     total = 0
#     for i in range(1, k + 1):
#         for j in range(1, k + 1):
#             for l in range(1, k + 1):
#                 total += gcd_list([i, j, l])
#     ans[k - 1] = total
# print(ans)
ans3 = [1, 9, 30, 76, 141, 267, 400, 624, 885, 1249, 1590, 2208, 2689, 3411, 4248, 5248, 6081, 7485, 8530, 10248, 11889, 13687, 15228, 17988, 20053, 22569, 25242, 28588, 31053, 35463, 38284, 42540, 46581, 50893, 55362, 61824, 65857, 71247, 76884, 84388, 89349, 97881, 103342, 111528, 120141, 128047, 134580, 146316, 154177, 164817, 174438, 185836, 194157, 207927, 218812, 233268, 245277, 257857, 268182, 288216, 299257, 313635, 330204, 347836, 362973, 383709, 397042, 416448, 434025, 456967, 471948, 499740, 515581, 536073, 559758, 583960, 604833, 633651, 652216, 683712, 709065, 734233, 754734, 793188, 818917, 846603, 874512, 909496, 933081, 977145, 1006126, 1041504, 1073385, 1106467, 1138536, 1187112, 1215145, 1255101, 1295142, 1342852, 1373253, 1422195, 1453816, 1502376, 1553361, 1595437, 1629570, 1691292, 1726717, 1782111, 1827492, 1887772, 1925853, 1986837, 2033674, 2089776, 2145333, 2197483, 2246640, 2332104, 2379085, 2434833, 2490534, 2554600, 2609625, 2693919, 2742052, 2813988, 2875245, 2952085, 3003306, 3096024, 3157249, 3224511, 3306240, 3388576, 3444609, 3533637, 3591322, 3693924, 3767085, 3842623, 3912324, 4027884, 4102093, 4181949, 4270422, 4361548, 4427853, 4548003, 4616104, 4718640, 4812789, 4918561, 5003286, 5131848, 5205481, 5299011, 5392008, 5521384, 5610705, 5739009, 5818390, 5930196, 6052893, 6156139, 6239472, 6402720, 6493681, 6623853, 6741078, 6864016, 6953457, 7094451, 7215016, 7359936, 7475145, 7593865, 7689630, 7886244, 7984165, 8130747, 8253888, 8403448, 8523897, 8684853, 8802826, 8949612, 9105537, 9267595, 9376656, 9574704, 9686065, 9827097, 9997134, 10174780, 10290813, 10493367, 10611772, 10813692]
k = int(input())
print(ans3[k - 1])

# d問題


# #　E問題