#include<bits/stdc++.h>
#include<bits/extc++.h>
#define inf64 (long long)0x3f3f3f3f3f3f3f3f
#define inf32 (int)0x3f3f3f3f
#define _inf32 (int)0xc0c0c0c0
#define _inf64 (long long)0xc0c0c0c0c0c0c0c0
#define N 10
#define M 10
#define V 10000
int in(){
int sum=0,op=1,c=getchar();
while(c<48||57<c)op=(c==45?-1:1),c=getchar();
while(48<=c&&c<=57)sum=(sum<<3)+(sum<<1)+c-48,c=getchar();
return sum*op;
}
int r(int l,int r){
int len=r-l+1;
srand(rand());
return rand()*rand()%len+l;
}
using namespace std;
using namespace __gnu_pbds;
int n,m,u,v,op,x,y,nume;
int siz[N],f[N];
int val[N];
int find(int x){
return f[x]==x?x:f[x]=find(f[x]);
}
bool mer(int x,int y){
x=find(x),y=find(y);
if(x==y)return 0;
if(siz[x]>siz[y])swap(x,y);
f[x]=y;
siz[y]+=siz[x];
siz[x]=0;
return 1;
}
int main(){
freopen("sum.out","w",stdout);
srand(time(0));
n=N,m=M;
printf("%d %d\n",n,m);
for(int i=1;i<=n;i++){
val[i]=r(1,V);
printf("%d ",val[i]);
}
printf("\n");
for(int i=1;i<=n;i++){
siz[i]=1,f[i]=i;
}
while(nume<n-1){
// cerr<<nume<<endl;
u=r(1,n-1);
v=r(u+1,n);
if(mer(u,v)){
printf("%d %d\n",u,v);
nume++;
}
}
for(int i=1;i<=m;i++){
op=rand()&1;
x=r(1,n);
if(op){
y=r(1,V);
}else{
y=r(0,n-1);
}
printf("%d %d %d\n",op,x,y);
}
}
非强制在线,所以请注释掉异或上次输出