import Data.List
import Control.Monad

cograph::Int->[(Int,Int)]
cograph n = case mod n 2 == 0 of
            True -> [(i,(n+1-i))|i<-[1..div n 2]]
            False-> [(i,n-i)|i<-[1..div n 2]]

eater::[(Int,Int)]->[(Int,Int)]->[(Int,Int)]
eater rest []       = rest
eater (x:xs) (y:ys) = if x == y then eater xs ys
                                else x:(eater xs (y:ys))

solver::Int->[(Int,Int)]
solver n = eater [(i,j)|i<-[1..n],j<-[1..n],i<j] (sort (cograph n))

main::IO()
main=do
  n<-return.read=<<getLine
  forM_ (solver n) (\(x,y)->putStr (show x ++ " " ++ show y ++ "\n"))