#include <bits/stdc++.h>
using namespace std;
const int N = 210;
const long long INF = 2e18;
int n, m;
long long k;
int t[N];
int pi[N];
int automat[N][2];
int nxt[N][N];
long long cnt[N][N];
void init(int len) {
  t[len + 1] = 2;
  pi[1] = 0;
  for (int i = 2; i <= len; ++i) {
    int b = pi[i - 1];
    while (b > 0 && t[i] != t[b + 1]) b = pi[b];
    if (t[i] == t[b + 1]) b++;
    pi[i] = b;
  }
  for (int i = 0; i <= len; ++i)
    for (int x = 0; x <= 1; ++x) {
      if (t[i + 1] == x)
        automat[i][x] = i + 1;
      else
        automat[i][x] = (i == 0 ? 0 : automat[pi[i]][x]);
    }
  for (int j = 0; j <= 1; ++j)
    for (int i = 0; i <= len; ++i) {
      nxt[j][i] = automat[i][j];
      cnt[j][i] = automat[i][j] == len;
    }
  for (int j = 2; j <= n; ++j)
    for (int i = 0; i <= len; ++i) {
      nxt[j][i] = nxt[j - 1][nxt[j - 2][i]];
      cnt[j][i] = cnt[j - 2][i] + cnt[j - 1][nxt[j - 2][i]];
      cnt[j][i] = min(cnt[j][i], INF);
    }
}
int main() {
  scanf("%d%lld%d", &n, &k, &m);
  for (int i = 1; i <= m; ++i) {
    if (i > 1) {
      init(i - 1);
      if (nxt[n][0] == i - 1) k--;
      if (!k) break;
    }
    t[i] = 0;
    init(i);
    if (cnt[n][0] >= k) {
      t[i] = 0;
    } else {
      t[i] = 1;
      k -= cnt[n][0];
    }
    printf("%d", t[i]);
  }
  return 0;
}
