#include using namespace std; #define rep(i,n) for (long long i=0;i<(long long)(n);i++) #define all(v) v.begin(),v.end() using ll=long long; using pll=pair; using tll=tuple; const ll inf=-(1ll<<60),INF=(1ll<<60); template void chmin(T &a,T b){ if(a>b){ a=b; } } template void chmax(T &a,T b){ if(a> n >> m; vector a(n),b(n); vector v; rep(i,n){ cin >> a[i] >> b[i]; if(1<=i)v.emplace_back((a[i]-a[i-1])*(a[i]-a[i-1])+(b[i]-b[i-1])*(b[i]-b[i-1]),i-1,i); } sort(all(v)); reverse(all(v)); vector u(m); vector ans; for(int i=1;i<=n;i++){ ans.push_back({1,i}); } ans.push_back({1,1}); rep(i,m){ ll w,x,y; tie(w,x,y)=v[i]; u[i]={(a[x]+a[y])/2,(b[x]+b[y])/2}; rep(j,ans.size()){ if(ans[j].second==x){ ans.insert(ans.begin()+j,{2,i+1}); break; } } } rep(i,m){ cout << u[i].first << " " << u[i].second << endl; } cout << ans.size() << endl; rep(i,ans.size()){ cout << ans[i].first << " " << ans[i].second << endl; } }