#include using namespace std; /* ショトカ登録 cin cout endl return void int double string char pair make_pair first second tuple make_tuple get sort erase swap map set insert stoi reverse to_string auto bool true false vector queue priority_queue front pop_frpnt size substr push_back pop_back push pop top if for while break continue next_permutation __builtin_popcount */ //無限 int inf = 1020304050; int64_t INF = 1020304050607080900; //モッド int64_t mod = 998244353; //all マクロ #define all(v) v.begin(), v.end() //int64_t typedef int64_t lint; int main () { //少数以下 cout << fixed << setprecision(15); lint Q, K; cin >> Q >> K; if ((Q == 1) || ((Q == 2 || Q == 3) && K >= 3) || (Q == 4 && K >= 4) || (Q >= 5 && K >= 5)) { cout << "Yes" << endl; if (Q >= 1) cout << "1 2" << endl;//最大2 if (Q >= 2) cout << "1 3" << endl;//最大3 if (Q >= 3) cout << "2 4" << endl;//3 if (Q >= 4) cout << "2 5" << endl;//4 if (Q >= 5) cout << "2 5" << endl;//5 for (lint i = 6; i <= Q; i++) { if (Q >= 2) cout << "6 7" << endl;//変動なし } } else if (Q == 5 && K == 4) { cout << "Yes" << endl; cout << "1 2" << endl;//最大2 cout << "1 3" << endl;//最大3 cout << "2 4" << endl;//3 cout << "2 4" << endl;//最大4 cout << "3 5" << endl;//4 } else { cout << "No" << endl; } //*/ }