#include //#include using namespace std; //using namespace atcoder; using ll = long long; //using mint = modint998244353; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); /* (1,2) (1,2) (3,4) (4,5) (4,5) (6,7)繰り返し 1 2 3 4 5 6 7 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 Q>=5のときは5以下にできる。 1 1 0 0 1 0 1 1 0 1 1 0 0 1 */ int Q, K; cin >> Q >> K; if (Q <= 5){ vector> v; vector>> w; auto dfs=[&](auto self, int now=2)->void{ if (now == Q+2){ w.push_back(v); return; } for (int i=0; i> ami; for (auto &ww : w){ int mx=-1e9; for (int i=0; i<2; i++){ for (int j=0; j<2; j++){ vector vv={i,j}; for (auto [a, b] : ww){ vv.push_back(!(vv[a]&vv[b])); } int sm=0; for (auto vvv : vv) sm += vvv; mx = max(mx, sm); } } if (mx < mi){ mi = mx; ami = ww; } } if (mi > K) cout << "No" << endl; else{ cout << "Yes" << endl; for (auto [a, b] : ami) cout << a+1 << " " << b+1 << endl; } } else{ if (K <= 4) cout << "No" << endl; else{ cout << "Yes" << endl; cout << "1 2" << endl; cout << "1 2" << endl; cout << "3 4" << endl; cout << "4 5" << endl; cout << "4 5" << endl; for (int i=0; i