# import sys # input = sys.stdin.readline def mp():return map(int,input().split()) def lmp():return list(map(int,input().split())) import math import bisect from copy import deepcopy as dc from itertools import accumulate from collections import Counter, defaultdict, deque def ceil(U,V):return (U+V-1)//V def modf1(N,MOD):return (N-1)%MOD+1 inf = int(1e30) mod = int(1e9+7) n = int(input()) used = [set() for i in range(n+1)] m = 0 for i in range(1,n+1): cnt = n-i-len(used[i]) #print(cnt) for j in range(1,n+1): if i != j and j not in used[i] and cnt>=1: m += 1 cnt -= 1 used[i].add(j) used[j].add(i) #print(used) print(m) for i in range(1,n+1): for j in used[i]: if i < j:print(i,j)