版权声明: https://blog.csdn.net/yyy_3y/article/details/79965431
思路:分情况构造,一定 正确的树是一条直线。不正确的话是当n>=6的时候,只需要在1上挂2,3,4,其他挂在2上就行。画画图就很容易出来啦。
#include<bits/stdc++.h>
#define debug(a) cout << #a << " " << a << endl
#define LL long long
#define ull unsigned long long
#define PI acos(-1.0)
#define eps 1e-6
const int N=1e5+7;
using namespace std;
int main ()
{
//yyy_3y
//freopen("1.in","r",stdin);
int n; scanf("%d",&n);
if(n<6){
printf("-1\n");
}else {
for(int i=2;i<=4;i++) printf("1 %d\n",i);
for(int i=5;i<=n;i++) printf("2 %d\n",i);
}
for(int i=1;i<n;i++){
printf("%d %d\n",i,i+1);
}
return 0;
}