#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, moves, distanceToCover;
  cin >> n >> moves >> distanceToCover;
  vector<long long> v;
  long long maxAvailable;
  bool left = false;
  long long currentHouse = 1;
  if (distanceToCover > (n - 1) * moves || distanceToCover < moves)
    cout << "NO";
  else {
    while (moves) {
      if (distanceToCover == moves) {
        while (moves--) {
          if (currentHouse + 1 <= n)
            currentHouse++;
          else
            currentHouse--;
          v.push_back(currentHouse);
        }
        break;
      }
      maxAvailable = max(currentHouse - 1, n - currentHouse);
      if (distanceToCover - maxAvailable >= moves - 1) {
        distanceToCover -= maxAvailable;
        if (currentHouse + maxAvailable <= n) {
          currentHouse = currentHouse + maxAvailable;
          v.push_back(currentHouse);
        } else {
          currentHouse = currentHouse - maxAvailable;
          v.push_back(currentHouse);
        }
      } else {
        maxAvailable = distanceToCover - (moves - 1);
        distanceToCover -= maxAvailable;
        if (currentHouse + maxAvailable <= n) {
          currentHouse = currentHouse + maxAvailable;
          v.push_back(currentHouse);
        } else {
          currentHouse = currentHouse - maxAvailable;
          v.push_back(currentHouse);
        }
      }
      moves--;
    }
    cout << "YES\n";
    for (int i = 0; i < v.size(); ++i) {
      cout << v[i] << " ";
    }
  }
  return 0;
}
