#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<double, double>;
using pss = pair<string, string>;
using pbb = pair<bool, bool>;
using ti3 = tuple<int, int, int>;
using tl3 = tuple<ll, ll, ll>;
using td3 = tuple<double, double, double>;
using ts3 = tuple<string, string, string>;
using tb3 = tuple<bool, bool, bool>;
using ti4 = tuple<int, int, int, int>;
using tl4 = tuple<ll, ll, ll, ll>;
using td4 = tuple<double, double, double, double>;
using ts4 = tuple<string, string, string, string>;
using tb4 = tuple<bool, bool, bool, bool>;
using vi = vector<int>;
using vl = vector<ll>;
using vd = vector<double>;
using vs = vector<string>;
using vb = vector<bool>;
using vvi = vector<vi>;
using vvl = vector<vl>;
using vvd = vector<vd>;
using vvs = vector<vs>;
using vvb = vector<vb>;
using v3i = vector<vvi>;
using v3l = vector<vvl>;
using v3d = vector<vvd>;
using v3s = vector<vvs>;
using v3b = vector<vvb>;
using vpii = vector<pii>;
using vpll = vector<pll>;
using vpdd = vector<pdd>;
using vpss = vector<pss>;
using vpbb = vector<pbb>;
using vti3 = vector<ti3>;
using vtl3 = vector<tl3>;
using vtd3 = vector<td3>;
using vts3 = vector<ts3>;
using vtb3 = vector<tb3>;
using mii = map<int, int>;
using mll = map<ll, ll>;
using mci = map<char, int>;
using msi = map<string, int>;
using si = set<int>;
using sl = set<ll>;
using sd = set<double>;
using ss = set<string>;
using sb = set<bool>;
using spii = set<pii>;
using spll = set<pll>;
using spdd = set<pdd>;
using spss = set<pss>;
using spbb = set<pbb>;
using sti3 = set<ti3>;
using stl3 = set<tl3>;
using std3 = set<td3>;
using sts3 = set<ts3>;
using stb3 = set<tb3>;
template <typename T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
T sum(const vector<T> &VEC) {
  return accumulate(begin(VEC), end(VEC), 0.0);
}
template <typename T>
vector<T> acm(const vector<T> &VEC) {
  vector<T> RES(VEC.size() + 1);
  for (int CNT = 0; CNT < (int)(VEC.size()); CNT++)
    RES[CNT + 1] = RES[CNT] + VEC[CNT];
  return RES;
}
template <typename T>
void fil(vector<T> &VEC, const int NUM, const T &VAL) {
  VEC.assign(NUM, VAL);
}
template <typename T>
void fil(vector<T> &VEC, const int NUM) {
  VEC.assign(NUM, 0.0);
}
template <typename T>
void fil(vector<vector<T>> &VV, const int RNUM, const int CNUM, const T &VAL) {
  fil(VV, RNUM, vector<T>());
  for (int CNT = 0; CNT < (int)(RNUM); CNT++) fil(VV[CNT], CNUM, VAL);
}
template <typename T>
void fil(vector<vector<T>> &VV, const int RNUM, const int CNUM) {
  fil(VV, RNUM, vector<T>());
  for (int CNT = 0; CNT < (int)(RNUM); CNT++) fil(VV[CNT], CNUM);
}
template <typename T>
void fil(vector<vector<T>> &VV, const int RNUM) {
  fil(VV, RNUM, vector<T>());
}
void prec(const int &DIG) {
  cerr << fixed << setprecision(DIG);
  cout << fixed << setprecision(DIG);
}
template <typename T>
void COUT(const T &ELEM) {
  cout << ELEM;
}
template <typename T>
void pout(const T &ELEM) {
  COUT(ELEM);
  cout << " ";
}
template <typename T, typename... Ts>
void pout(const T &FIRST, const Ts &...REST) {
  pout(FIRST);
  pout(REST...);
}
template <typename T>
void print(T ELEM) {
  COUT(ELEM);
  cout << "\n";
}
template <typename T, typename... Ts>
void print(const T &FIRST, const Ts &...REST) {
  print(FIRST);
  print(REST...);
}
void CERR() { cerr << "\n"; }
template <typename T>
void CERR(const T &ELEM) {
  cerr << ELEM;
}
template <typename T, typename... Ts>
void CERR(const T &FIRST, const Ts &...REST) {
  CERR(FIRST);
  cerr << ", ";
  CERR(REST...);
}
template <typename T1, typename T2>
void CERR(const pair<T1, T2> &PAIR) {
  cerr << "(";
  CERR(PAIR.first);
  cerr << ", ";
  CERR(PAIR.second);
  cerr << ")";
}
template <typename T1, typename T2, typename T3>
void CERR(const tuple<T1, T2, T3> &TUP3) {
  cerr << "(";
  CERR(get<0>(TUP3));
  cerr << ", ";
  CERR(get<1>(TUP3));
  cerr << ", ";
  CERR(get<2>(TUP3));
  cerr << ")";
}
template <typename T1, typename T2, typename T3, typename T4>
void CERR(const tuple<T1, T2, T3, T4> &TUP4) {
  cerr << "(";
  CERR(get<0>(TUP4));
  cerr << ", ";
  CERR(get<1>(TUP4));
  cerr << ", ";
  CERR(get<2>(TUP4));
  cerr << ", ";
  CERR(get<3>(TUP4));
  cerr << ")";
}
template <typename T>
void CERR(const vector<T> &VEC) {
  cerr << "{ ";
  for (auto ITR = begin(VEC); ITR != end(VEC); ITR++) {
    CERR(*ITR);
    cerr << ", ";
  }
  cerr << "}";
}
template <typename T>
void CERR1(const vector<T> &VEC) {
  cerr << "{ ";
  for (auto ITR = next(begin(VEC)); ITR != end(VEC); ITR++) {
    CERR(*ITR);
    cerr << ", ";
  }
  cerr << "}";
}
template <typename T>
void CERR(const set<T> &SET) {
  cerr << "{ ";
  for (auto ITR = begin(SET); ITR != end(SET); ITR++) {
    CERR(*ITR);
    cerr << ", ";
  }
  cerr << "}";
}
template <typename T1, typename T2>
void CERR(const map<T1, T2> &MAP) {
  cerr << "{ ";
  for (auto ITR = begin(MAP); ITR != end(MAP); ITR++) {
    CERR(*ITR);
    cerr << ", ";
  }
  cerr << "}";
}
const ll INF = 1e12 + 7;
int main() {
  int N, K, S;
  cin >> N >> K >> S;
  for (int CNT = 0; CNT < (int)(K); CNT++) pout(S);
  for (int CNT = 0; CNT < (int)(N - K - 1); CNT++) pout(1);
  print(1);
}
