Pagini recente » Cod sursa (job #42313) | Cod sursa (job #2194753) | Cod sursa (job #684390) | Cod sursa (job #518759) | Cod sursa (job #345308)
Cod sursa(job #345308)
#include <stdio.h>
#define Nmax 1005
int a[Nmax];
int n,i,r,z,zi;
void do_mic(){
if(n==1 || n==2){
printf("%d\n",1);
printf("%d %d\n",1,1);
}else
if(n==3){
printf("%d\n",2);
printf("%d %d\n",1,1);
printf("%d %d\n",2,3);
}
}
void swap(int& x,int& y){
int t=x;x=y;y=t;
}
void write(){
int i,j;
printf("%d\n",n);
for(i=1,j=1;i<=n;++i){
while(a[j]==-1) ++j;
printf("%d %d\n",i,a[j]);
++j;
}
}
int main(){
freopen("dame.in","r",stdin);
freopen("dame.out","w",stdout);
scanf("%d",&n);
r= n % 12;
if(n<4) do_mic();
else{
for(i=2;i<=n;i+=2) a[++z]=i;
if(r==3 || r==9) a[1]=-1, a[++z]=2;
zi=z+1;
for(i=1;i<=n;i+=2) a[++z]=i;
if(r==8)
for(i=zi;i<=z;i+=2)
if(i+1<=z) swap(a[i],a[i+1]);
if(r==2){
swap(a[zi],a[zi+1]);
if(a[zi+2]==5)a[zi+2]=-1, a[++z]=5;
}
if(r==3 || r==9) a[zi]=-1, a[zi+1]=-1, a[++z]=1,a[++z]=3;
write();
}
fclose(stdin); fclose(stdout);
return 0;
}