Pagini recente » Cod sursa (job #2224779) | Cod sursa (job #1175808) | Cod sursa (job #1557640) | Cod sursa (job #1714593) | Cod sursa (job #192868)
Cod sursa(job #192868)
#include <cstdio>
#define IN "dame.in"
#define OUT "dame.out"
#define N_MAX 1100
int n;
int v[N_MAX];
void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d", &n);
}
void solve()
{
switch(n)
{
case 1: {printf("1\n1 1\n"); return;}
case 2: {printf("1\n1 1\n"); return;}
case 3: {printf("2\n1 1\n2 3\n"); return;}
}
int aux,st=1,end=0,x;
for(int i=2;i<=n;i+=2)
v[++end]=i;
if(n%12==3 || n%12==9)
{
for(int i=st;i<end;++i)
v[i]=v[i+1];
v[end]=2;
}
x=end+1;
for(int i=1;i<=n;i+=2)
v[++end]=i;
if(n%12==8)
for(int i=x;i<end;i+=2)
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
}
if(n%12==2)
{
aux=v[x],v[x]=v[x+1],v[x+1]=aux;
for(int i=x+2;i<end;++i)
v[i]=v[i+1];
v[end]=5;
}
if(n%12==3 || n%12==9)
{
for(int i=x;i<end;++i)
v[i]=v[i+2];
v[end-1]=1;
v[end]=3;
}
printf("%d\n",end);
for(int i=st;i<=end;++i)
printf("%d %d\n",v[i],v[v[i]]);
}
int main()
{
scan();
solve();
return 0;
}