# coding: utf-8
import sys
from collections import deque

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))

N = ir()
P = lr()
dp = [[min(i, N-1-i)] * N for i in range(N)]
people = [[True] * N for i in range(N)]
for j in range(N):
    x = min(j, N-1-j)
    for i in range(N):
        dp[i][j] = min(dp[i][j], x)

answer = 0

def bfs(sy, sx):
    que = deque([(sy, sx)])
    popleft = que.popleft; append = que.append
    while que:
        y, x = popleft()
        if (y, x) in used:
            continue
        used.add((y, x))
        cur = dp[y][x]
        if cur == -1 and not people[y][x]:
            people[y][x] = True
        for dy, dx in zip([0, 1, 0, -1], [1, 0, -1, 0]):
            ny = y + dy
            nx = x + dx
            if 0 <= ny < N and 0 <= nx < N:
                if dp[ny][nx] > cur + 1:
                    dp[ny][nx] = cur + 1
                    if not people[ny][nx]:
                        dp[ny][nx] = cur
                    append((ny, nx))
                elif dp[ny][nx] > cur and (not people[ny][nx]):
                    # 人がいない時
                    dp[ny][nx] = cur
                    append((ny, nx))

for p in P:
    p -= 1
    i = p // N
    j = p % N
    answer += dp[i][j]
    dp[i][j] -= 1
    people[i][j] = False
    used = set()

    bfs(i, j)

print(answer)
