func_code_string: #include <bits/stdc++.h>   using namespace std;   struct READ {     int d1, d2, d3;     READ(int d1 = -1, int d2 = -1, int d3 = -1) : d1(d1), d2(d2), d3(d3) {}     template <class T>     operator T() {       T tmp;       this->read(tmp);       return tmp;     }     template <class T>     void read(T& t) {       cin >> t;     }     template <class T>     void read(vector<T>& cont) {       assert(d1 != -1);       cont.resize(d1);       READ r(d2, d3);       for (int i = 0; i < d1; ++i) r.read(cont[i]);     }     template <class T1, class T2>     void read(pair<T1, T2>& x) {       read(x.first);       read(x.second);     }   };   vector<pair<int, int>> solve(int n, int k) {     int64_t combs = (int64_t)k * (k - 1);     if (combs < n) return {};     vector<pair<int, int>> result;     for (int diff = 1;; diff += 1) {       for (int x = 1; x <= k; ++x) {         result.emplace_back(x, (x + diff - 1) % k + 1);         if (result.size() >= n) return result;       }     }   }   int main(int argc, char* argv[]) {     int n = READ();     int k = READ();     vector<pair<int, int>> result = solve(n, k);     if (result.empty()) {       cout <<  NO  << endl;     } else {       cout <<  YES  << endl;       for (auto& p : result) {         cout << p.first <<     << p.second << endl;       }     }     return 0;   }   