from collections import deque from random import randrange N = int(input()) if N == 1 or N == 2: exit(print(-1)) def MOD1(a): while N2 < a: a -= N2 return a N2 = N**2 while True: a = randrange(1, N2-3) b = a+1 c = randrange(b+1, N2-1) d = c+1 if (a+b+c+d)%N2 != 0: continue edge = [] S = set() cnt = [0]*N2 for i in range(1, N2+1): E = [i+a, i+b, i+c, i+d] for j in range(4): E[j] = MOD1(E[j]) for e in E: edge.append((i, e)) if (e, i) not in S: S.add((i, e)) cnt[i-1] += 1 cnt[e-1] += 1 if cnt.count(4) < N2: continue G = [[] for _ in range(N2)] for u, v in edge: u, v = u-1, v-1 G[u].append(v) visited = [-1]*N2 visited[0] = 0 que = deque() que.append(0) while que: n = que.popleft() for v in G[n]: if visited[v] == -1: visited[v] = visited[n]+1 que.append(v) if max(visited) <= N: print(len(edge)//2) S = set() for u, v in edge: u, v = u-1, v-1 if (v, u) not in S: print(u+1, v+1) S.add((u, v)) break