#include #include #pragma GCC optimize "O3,omit-frame-pointer,inline" #define ALL(v) (v).begin(), (v).end() #define OVERLOAD4(_1, _2, _3, _4, name, ...) name #define REP1(n) for(int i=0;ivec; //typedef vectorvec; //typedef vector mat; typedef pair P; typedef pair LP; //const int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1}; //const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1}; const int INF = 1000000000; const ll LINF = 1000000000000000000;//1e18 const ll MOD = 1000000007; const double PI = acos(-1.0); // const double PI = 2 * acos(0); constexpr double EPS = 1e-10; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } /* ----------------------- DEBUG FUNCTION ---------------------------- */ #define DUMPOUT cerr #define DEBUG_ 1 void dump_function() { DUMPOUT << ' '; } void dump_function(bool a) { DUMPOUT << a; } void dump_function(int a) { DUMPOUT << a; } void dump_function(long long a) { DUMPOUT << a; } void dump_function(char a) { DUMPOUT << a; } void dump_function(string &a) { DUMPOUT << a; } void dump_function(double a) { DUMPOUT << a; } template void dump_function(const vector &); template void dump_function(const array &); template void dump_function(const pair &p); template void dump_function(const T (&)[size]); template void dump_function(const vector &a) { if(a.empty()) return; dump_function(a[0]); for(auto i = a.begin(); ++i != a.end();) { DUMPOUT << " "; dump_function(*i); } DUMPOUT << endl; } template void dump_function(const deque &a) { if(a.empty()) return; dump_function(a[0]); for(auto i = a.begin(); ++i != a.end();) { DUMPOUT << " "; dump_function(*i); } } template void dump_function(const array &a) { dump_function(a[0]); for(auto i = a.begin(); ++i != a.end();) { DUMPOUT << " "; dump_function(*i); } } template void dump_function(const pair &p) { DUMPOUT << '('; dump_function(p.first); DUMPOUT << ","; dump_function(p.second); DUMPOUT << ')'; } template void dump_function(set &x) { for(auto e : x) dump_function(e), DUMPOUT << " "; DUMPOUT << endl; } template void dump_function(multiset &x) { for(auto e : x) dump_function(e), DUMPOUT << " "; DUMPOUT << endl; } template void dump_function(const T (&a)[size]) { dump_function(a[0]); for(auto i = a; ++i != end(a);) { DUMPOUT << " "; dump_function(*i); } } template void dump_function(const T &a) { DUMPOUT << a; } int dump_out() { DUMPOUT << '\n'; return 0; } template int dump_out(const T &t) { dump_function(t); DUMPOUT << '\n'; return 0; } template int dump_out(const Head &head, const Tail &... tail) { dump_function(head); DUMPOUT << ' '; dump_out(tail...); return 0; } #ifdef DEBUG_ #define dump(x) \ DUMPOUT << #x << ": "; \ dump_function(x); \ DUMPOUT << endl; void dumps() {} template void dumps(const T &t) { dump_function(t); DUMPOUT << " "; } template void dumps(const Head &head, const Tail &... tail) { dump_function(head); DUMPOUT << ' '; dump_out(tail...); } #else #define dump(x) template void dumps(const T &...) {} #endif /* ----------------------- DEBUG FUNCTION ---------------------------- */ constexpr ll CYCLES_PER_SEC = 2800000000; constexpr double TL = 990; double get_ms() { struct timeval t; gettimeofday(&t, NULL); return (double)t.tv_sec * 1000 + (double)t.tv_usec / 1000; } uint32_t XorShift(void) { static uint32_t x = 123456789; static uint32_t y = 362436069; static uint32_t z = 521288629; static uint32_t w = 88675123; uint32_t t; t = x ^ (x << 11); x = y; y = z; z = w; return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); } double Prob(void){ double ret = (double)XorShift() / UINT_MAX; return ret; } struct RNG { unsigned int MT[624]; int index; RNG(int seed = 1) {init(seed);} void init(int seed = 1) {MT[0] = seed; REP(i, 1, 624) MT[i] = (1812433253UL * (MT[i-1] ^ (MT[i-1] >> 30)) + i); index = 0; } void generate() { const unsigned int MULT[] = {0, 2567483615UL}; REP(i, 227) {unsigned int y = (MT[i] & 0x8000000UL) + (MT[i+1] & 0x7FFFFFFFUL); MT[i] = MT[i+397] ^ (y >> 1); MT[i] ^= MULT[y&1]; } REP(i, 227, 623) {unsigned int y = (MT[i] & 0x8000000UL) + (MT[i+1] & 0x7FFFFFFFUL); MT[i] = MT[i-227] ^ (y >> 1); MT[i] ^= MULT[y&1]; } unsigned int y = (MT[623] & 0x8000000UL) + (MT[0] & 0x7FFFFFFFUL); MT[623] = MT[623-227] ^ (y >> 1); MT[623] ^= MULT[y&1]; } unsigned int rand() { if (index == 0) generate(); unsigned int y = MT[index]; y ^= y >> 11; y ^= y << 7 & 2636928640UL; y ^= y << 15 & 4022730752UL; y ^= y >> 18; index = index == 623 ? 0 : index + 1; return y;} inline __attribute__ ((always_inline)) int next() {return rand(); } inline __attribute__ ((always_inline)) int next(int x) {return rand() % x; } inline __attribute__ ((always_inline)) int next(int a, int b) {return a + (rand() % (b - a)); } inline __attribute__ ((always_inline)) double next_double() {return (rand() + 0.5) * (1.0 / 4294967296.0); } inline __attribute__ ((always_inline)) double next_double(double a, double b) {return a + next_double() * (b - a); } }; static RNG rng; const int N = 100; const int M = 8; vector a(N), b(N); vector c(M), d(M); namespace yukicoder_score_contest2{ void init(){ } void input(){ int _N, _M; cin >> _N >> _M; REP(i,N) cin >> a[i] >> b[i]; } void output() { REP(i,M) cout << c[i] << " " << d[i] << "\n"; cout << N+1 << endl; REP(i,N) cout << "1 " << i + 1 << "\n"; cout << "1 1" << endl; } void main(){ init(); input(); output(); } } int main(){ cin.tie(0); ios::sync_with_stdio(false); yukicoder_score_contest2::main(); }