/**************************************************/ /* C++ template by michirakara 「嘘解法は友達」(?) */ //include std #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //コンパイラと浮動小数点高速化 #pragma GCC optimize("O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #pragma GCC optimize("unroll-loops") //cin,endlの高速化 //インタラクティブのときは外す struct Fast {Fast() {std::cin.tie(0); ios::sync_with_stdio(false);}} fast; #define endl '\n' //using using ll=long long; using ld=long double; using vi=vector; using vl=vector; using vvi=vector; using vvl=vector; using pii=pair; using pll=pair;//PLLはY-permが好き const ll LINF=0x1fffffffffffffff; const int INF=0x3fffffff; const int MOD=998244353; const ld PI=3.1415926535897932384626433832795028841971; const ll dx[]={0,1,0,-1}; const ll dy[]={1,0,-1,0}; const ll dx8[]={0,1,0,-1,1,-1,1,-1}; const ll dy8[]={1,0,-1,0,1,1,-1,-1}; //define #define itn int//これすき #define elif else if /*最終兵器 絶対使うな #define int long long */ //マクロ //min(a,b,....)-> min({a,b,....}) //Pythonのように任意個の要素を入れることの可能なmin() template constexpr auto min(T... a){ return min(initializer_list>{a...}); } //同じくmax template constexpr auto max(T... a){ return max(initializer_list>{a...}); } void scan(int& a){cin>>a;} void scan(unsigned& a){cin>>a;} void scan(long& a){cin>>a;} void scan(long long& a){cin>>a;} void scan(unsigned long long& a){cin>>a;} void scan(float& a){cin>>a;} void scan(double& a){cin>>a;} void scan(long double& a){cin>>a;} void scan(char& a){cin>>a;} void scan(string& a){cin>>a;} template void scan(vector&); template void scan(array&); template void scan(pair&); template void scan(T(&)[size]); template void scan(vector& a){for(auto&& i:a)scan(i);}; template void scan(deque& a){for(auto&& i:a)scan(i);}; template void scan(array& a){for(auto&& i:a)scan(i);}; template void scan(pair& a){scan(a.first);scan(a.second);}; template void scan(T(&a)[size]){for(auto&& i:a)scan(i);}; template void scan(T& a){cin>>a;} void input(){} //input(a,b...)-> cin>>a>>b>>... //input(変数名...)で勝手に入力を受け取ってくれる かしこい template void input(Head& H,Tail&... T){ scan(H);input(T...); } //INT(a,b)-> int a,b;cin>>a>>b; //INT(変数名)でintの変数を作ってinputから取ってくれる かしこい #define INT(...)int __VA_ARGS__; input(__VA_ARGS__) //LL(a,b)-> long long a,b;cin>>a>>b; //LL(変数名)でllの変数を作ってinputから取ってくれる かしこい #define LL(...)ll __VA_ARGS__; input(__VA_ARGS__) void puts(){cout<<' ';} void puts(int a){cout< void puts(vector); template void puts(array); template void puts(pair); template void puts(T[size]); template void puts(vector a){if(a.empty())return;puts(a[0]);for(auto i=a.begin();++i!=a.end();){cout<<' ';puts(*i);}}; template void puts(deque a){if(a.empty())return;puts(a[0]);for(auto i=a.begin();++i!=a.end();){cout<<' ';puts(*i);}}; template void puts(array a){puts(a[0]);for(auto i=a.begin();++i!=a.end();){cout<<' ';puts(*i);}}; template void puts(pair a){puts(a.first);cout<<' ';puts(a.second);}; template void puts(T(a)[size]){puts(a[0]);for(auto i=a;++i!=end(a);){cout<<' ';puts(*i);}}; template void puts(T a){cout< void print(Head H,Tail... T){ puts(H);print(T...); } //rep1(i,a)-> i in [0,a) //reps(i,a,b)-> i in [a,b) //r_p(i,a,b,c)-> i in [a,b) by c #define rep1(i, a) for(ll i=0; i<(ll)a; i++) #define reps(i, a, b) for(ll i=a; i<(ll)b; i++) #define r_p(i, a, b, c) for(ll i=a; i<(ll)b; i+=c) //rep(i,a)-> i in [0,a) //rep(i,a,b)-> i in [a,b) //rep(i,a,b,c)-> i in [a,b) by c //大体Pythonのfor文と同じrepマクロ #define overload4(a, b, c, d, e, ...) e #define rep(...) overload4(__VA_ARGS__, r_p, reps, rep1)(__VA_ARGS__) //イテレータの最初から最後までを返す 例:sort(all(v)) #define all(x) (x).begin(),(x).end() //上の逆順 例:sort(rall(v)) (降順にソートされる) #define rall(x) (x).rbegin(),(x).rend() //next_permutationでもらえる順に全部順列を返す 例:for(vi i:perm(v)) #define perm(c) sort(all(c));for(bool c##p=1;c##p;c##p=next_permutation(all(c))) //sizeを int(ここ大事) で返す #define sz(x) ((int)(x).size()) //boolを渡すとYesNoを出力する #define YesNo(bool) if(bool){cout<<"Yes"< ab(N);input(ab); set st; for(pii i:ab)st.insert(i); int ind=0; rep(i,1000){ rep(j,1000){ ind++; print(i,' ',j); if(ind==M){ goto endloop; } } } endloop: print(N+1); rep(i,N){ print(1,' ',i+1); } print(1,' ',1); }