/*
TASK:mate
LANG:C++
*/

#include <iostream>
using namespace std;

void Read();
void Solve();
void Out();

int N;
int days,played[101][101];        //prez koi den I e igral s J
int white[101],black[101];        //sre6tu koi e igral s beli/4erni dnes

int main()
{
 Read();
 Solve();
 Out();
 
 return 0;
}

void Read()
{
 cin>>N;
 N++;
}

void Solve()
{
 int flag=1,i,j;
 
 while(flag)
 {
  flag=0;
  days++;
  for(i=0;i<N;i++) white[i]=black[i]=0;
  
  for(i=1;i<N;i++)
   for(j=1;j<N;j++)
    if(i!=j)
    if(!played[i][j])
    {
     flag=1;
     
     if((white[i]==0)&&(black[j]==0))          //try i->j
     {
      if(white[j]!=i)
      {
       played[i][j]=days;
       white[i]=j;
       black[j]=i;
      }
     }
     else if((white[j]==0)&&(black[i]==0))     //try j->i
     {
      if(white[i]!=j)
      {
       played[j][i]=days;
       white[j]=i;
       black[i]=j;
      }
     }
    }
    
  
 }
}

void Out()
{
 int i,j,k;
 cout<<days-1<<endl;
 
 for(k=1;k<days;k++)
 {
  for(i=1;i<N;i++)
   for(j=1;j<N;j++)
    if(played[i][j]==k) cout<<i<<'-'<<j<<' ';
  
  cout<<endl;
 }
}
