from fractions import gcd
def slope(a, b, r):
lines = dict()
for x in r:
for y in r:
c = a*x + b*y
lines[c] = lines.get(c, 0) + 1
count = 0
for k in lines.values():
count += 2**k - k - 1
return count
def cnt(n):
count = n*n + 1
n = n
r = range(0, n)
for a in r:
for b in r:
if gcd(a, b) == 1:
count += slope(a, b, r)
if a*b != 0:
count += slope(a, -b, r)
return count
counts=[]
for i in range(20):
cur = cnt(i)
counts.append(cur)
print("{:3d}: {:10d}".format(i, cur))
print(",".join(str(c) for c in counts[:12]))
ZnJvbSBmcmFjdGlvbnMgaW1wb3J0IGdjZAoKZGVmIHNsb3BlKGEsIGIsIHIpOgogICAgbGluZXMgPSBkaWN0KCkKICAgIGZvciB4IGluIHI6CiAgICAgICAgZm9yIHkgaW4gcjoKICAgICAgICAgICAgYyA9IGEqeCArIGIqeQogICAgICAgICAgICBsaW5lc1tjXSA9IGxpbmVzLmdldChjLCAwKSArIDEKICAgIGNvdW50ID0gMAogICAgZm9yIGsgaW4gbGluZXMudmFsdWVzKCk6CiAgICAgICAgY291bnQgKz0gMioqayAtIGsgLSAxCiAgICByZXR1cm4gY291bnQKCmRlZiBjbnQobik6CiAgICBjb3VudCA9IG4qbiArIDEKICAgIG4gPSBuCiAgICByID0gcmFuZ2UoMCwgbikKICAgIGZvciBhIGluIHI6CiAgICAgICAgZm9yIGIgaW4gcjoKICAgICAgICAgICAgaWYgZ2NkKGEsIGIpID09IDE6CiAgICAgICAgICAgICAgIGNvdW50ICs9IHNsb3BlKGEsIGIsIHIpCiAgICAgICAgICAgICAgIGlmIGEqYiAhPSAwOgogICAgICAgICAgICAgICAgICAgY291bnQgKz0gc2xvcGUoYSwgLWIsIHIpCiAgICByZXR1cm4gY291bnQKCmNvdW50cz1bXQpmb3IgaSBpbiByYW5nZSgyMCk6CiAgICBjdXIgPSBjbnQoaSkKICAgIGNvdW50cy5hcHBlbmQoY3VyKQogICAgcHJpbnQoIns6M2R9OiB7OjEwZH0iLmZvcm1hdChpLCBjdXIpKQpwcmludCgiLCIuam9pbihzdHIoYykgZm9yIGMgaW4gY291bnRzWzoxMl0pKQo=
0: 1
1: 2
2: 11
3: 54
4: 191
5: 554
6: 1375
7: 3206
8: 6971
9: 14850
10: 31055
11: 64766
12: 134227
13: 279962
14: 582971
15: 1217646
16: 2544371
17: 5321114
18: 11116867
19: 23221790
1,2,11,54,191,554,1375,3206,6971,14850,31055,64766