#include using namespace std; using ll = long long; bool judge(ll n, ll K, vector< vector >& ans) { ll sum = n * (n + 1) / 2; ll mini_sum = sum / K; for (vector& v : ans) { ll tmp = 0; for (ll x : v) tmp += x; if (mini_sum != tmp) return false; } return true; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); ll n, K; cin >> n >> K; ll sum = n * (n + 1) / 2; if (sum % K != 0) { cout << "No\n"; return 0; } vector< vector > ans(K); for (int i = 0; i < n / K; i++) { for (int j = 0; j < K; ++j) { ans[j].push_back(i * K + (i + j) % K + 1); } } if (!judge(n, K, ans)) { cout << "No\n"; return 0; } cout << "Yes\n"; for (int i = 0; i < ans.size(); i++) { for (int j = 0; j < ans[i].size(); ++j) { cout << ans[i][j] << " \n"[j + 1 == ans[i].size()]; } } return 0; }