def main(): n = int(input()) if n <= 3: print(-1) return Ans = [[[0, 0, 0, 0] for _ in range(n)] for _ in range(n)] rep = [] if n % 2: l = n//2-2 r = n//2+3 X0 = [[0, 1], [0, 3], [1, 0], [2, 1], [3, 2], [3, 3], [4, 0], [4, 1], [4, 2]] X1 = [[0, 1], [0, 2], [0, 3], [0, 4], [1, 0], [1, 3], [1, 4], [2, 0], [2, 1], [2, 2], [2, 4], [3, 0], [3, 3]] else: l = n//2-2 r = n//2+2 X0 = [[0, 1], [0, 2], [1, 0], [1, 2], [2, 1], [2, 2], [3, 0], [3, 1]] X1 = [[0, 1], [0, 3], [1, 0], [2, 0], [2, 2]] for xx in X0: y, x = xx rep.append(((l+y)*n+l+x, (l+y)*n+l+x+1)) for xx in X1: y, x = xx rep.append(((l+y)*n+l+x, (l+y)*n+l+x+n)) l -= 1 r += 1 while 0 <= l: for y0 in range(l, r-1): if y0 != l: rep.append((y0*n+l, y0*n+l+n)) if y0 != r-2: rep.append((y0*n+r-1, y0*n+r-1+n)) for x0 in range(l, r-1): if x0 != l: rep.append((l*n+x0, l*n+x0+1)) if x0 != r-2: rep.append(((r-1)*n+x0, (r-1)*n+x0+1)) rep.append((l*n+l+1, l*n+l+1+n)) rep.append(((r-1)*n+r-2, (r-1)*n+r-2-n)) rep.append(((l+2)*n+l, (l+2)*n+l+1)) rep.append(((r-3)*n+r-1, (r-3)*n+r-2)) l -= 1 r += 1 rep.append((0, n)) rep.append(((n-2)*n+n-1, (n-1)*n+n-1)) for u, v in rep: print(u+1, v+1) return from atcoder.dsu import DSU uf = DSU(n*n) for u, v in rep: if uf.same(u, v): print("NOOO") print(u//n, u%n) print(v//n, v%n) uf.merge(u, v) print(len(uf.groups())) #print(uf.groups()) main()