#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const long long mod2 = 998244353;
long long bin(long long bina) {
  long long ans = 0;
  for (long long i = 0; bina > 0; i++) {
    ans = ans + (bina % 2) * pow(10, i);
    bina = bina / 2;
  }
  return ans;
}
bool prime(long long n) {
  for (long long i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) return false;
  }
  return n != 1;
}
long long gcd(long long x, long long y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
long long lcm(long long x, long long y) { return x * y / gcd(x, y); }
long long kai(long long x) {
  if (x == 0) return 1;
  return kai(x - 1) * x % mod;
}
long long mod_pow(long long x, long long y, long long m) {
  long long res = 1;
  while (y > 0) {
    if (y & 1) {
      res = res * x % m;
    }
    x = x * x % m;
    y >>= 1;
  }
  return res;
}
long long comb(long long n, long long r) {
  long long ans = 1;
  for (long long i = n; i > n - r; --i) {
    ans = ans * i;
  }
  for (long long i = 1; i < r + 1; ++i) {
    ans = ans / i;
  }
  return ans;
}
long long per(long long n, long long r) {
  r = n - r;
  long long sum = 1;
  long long i;
  for (i = n; i >= r + 1; i--) sum *= i;
  return sum;
}
struct union_find {
  long long par[200010], size_[200010];
  void init(long long x) {
    for (long long i = 0; i < x; ++i) {
      par[i] = i;
      size_[i] = 1;
    }
  }
  long long find(long long x) {
    if (par[x] == x) return x;
    return par[x] = find(par[x]);
  }
  void unite(long long x, long long y) {
    x = find(x);
    y = find(y);
    if (x == y) return;
    if (size_[x] < size_[y]) {
      par[x] = y;
      size_[y] += size_[x];
    } else {
      par[y] = x;
      size_[x] += size_[y];
    }
  }
};
long long ctoi(const char c) { return c - '0'; }
long long keta(long long a) { return to_string(a).size(); }
signed main() {
  long long n, k, s;
  cin >> n >> k >> s;
  if (s % 2 == 1) {
    long long q = s / 2;
    long long w = s - q;
    long long d = 2 * k - n;
    long long f = k - d;
    for (long long i = 0; i < d; ++i) {
      cout << s << ' ';
    }
    for (long long i = 0; i < f; ++i) {
      if (i % 2 == 0) {
        cout << q << ' ' << w << ' ';
      } else {
        cout << w << ' ' << q << ' ';
      }
    }
    cout << endl;
  } else {
    long long q = s / 2 + 1;
    long long w = s - q;
    long long d = 2 * k - n;
    long long f = k - d;
    cout << d << ' ' << f << endl;
    for (long long i = 0; i < d; ++i) {
      cout << s << ' ';
    }
    for (long long i = 0; i < f; ++i) {
      if (i % 2 == 0) {
        cout << q << ' ' << w << ' ';
      } else {
        cout << w << ' ' << q << ' ';
      }
    }
    cout << endl;
  }
}
